Page d'Accueil
- POV-Ray Tutorial
- Modélisme ferroviaire
avec POV-Ray
Table des matières
- Rail Track System,
un système des rails
pour POV-Ray
Basic Track Elements
- Voies droites et courbes
- Aiguillages
- Y et 3Directions
- Croisements
- Usage simplifié par
RT_System_00.inc
- Éléments de voies
avec RT_System_00.inc
- Voies adaptées aux
échelles de modélisme
- Échelle H0 voies
- Échelle N voies
- Échelle Z voies
- Plans voies avec
voies à l'échelle
- Placement des voies
> Voies en 'haut et bas
- Plans voies exemples
- Simple cyclique
- 'huit simple
- Téléchargement
Rail Track System
|
|
Plans voies avec voies à l'échelle
Voies en haut et en bas
|
Le placement des éléments des rails
Une démonstration avec un système de voies à l'échelle N
de la geometrie type A:
1) Rails droits et courbes en haut et en bas
La pente de rails par cisaillement avec
Track_Up_00("NAME",STEP,GRADIENT_TYPE) macro
Ici :
NAME le nome du élément de rails:
p.ex. T_222, T_115, T_111, T_107, T_058, T_055, T_028,
T_R1_45, T_R1_30, T_R1_15, T_R2_45, T_R2_30, ...
STEP le valeur du gradient (difference de hauteur) en metre
pour rails en échelle N ( p.ex. 0.015 pour 1,5cm )
GRADIENT_TYPE:
0 pour simple vers le haut (ou vers le bas pour STEP négative)
1 pour divisé vers le haut avec transition douce (seulement avec T_222, T_115, T_111, T_107,
et courbes des angles 45°, 30° et 15°.)
2 pour divisé arrivé au haut avec transition douce (seulement avec T_222, T_115, T_111, T_107,
et courbes des angles 45°, 30° et 15°.
Note: Utiliser cisaillement au lieu de rotation n'est pas totalemente exact
de la vue de la geometrie.
La projection verticale d'un rail tourné vers le haut sur le plan du sol est plus courte
que le rail ( Voir : Pythagore !)!
Mais cette simplification il est plus facile de façon dramatique projeter plans voies,
pourquoi nous ne devons pas calculer chaque fois la longueur de cette projection.
Et d'ordinaire pour des gradients petits la difference
est plus petit que la tolerance que nous avons avec modèles des rails réels.
//----------------------------------------------//
#local Step_1 = 0.02;
object{ Track_Up_00("T_111",Step_1,0)
translate<0*L111,0*Step_1*N,0>}
object{ Track_Up_00("T_111",Step_1,0)
translate<1*L111,1*Step_1*N,0>}
//----------------------------------------------// |
Transition vive et douce :
Faire des gradients avec arêtes vives au début et à la fin
non est pas seulement un solution esthétique non-optimale, mais cela
fait aussi très grand problèmes en modélisme ferroviaire pour les modèles de trains.
Pour éviter cela en plans voies avec POV-Ray nous pouvons utiliser la
subdivision avec GRADIENT_TYPE 1 (au début) et 2 (à la fin)
avec ~ 1/2 du STEP.
//----------------------------------------------//
#local Step_1 = 0.0225;
object{ Track_Up_00("T_111", Step_1/2, 1)
translate<0*L111,0.0*Step_1*N,0>}
object{ Track_Up_00("T_111", Step_1 , 0)
translate<1*L111,0.5*Step_1*N,0>}
object{ Track_Up_00("T_111", Step_1/2, 2)
translate<2*L111,1.5*Step_1*N,0>}
//----------------------------------------------// |
|
La pente de rails par cisaillement
Track_Up_00("NAME",STEP,GRADIENT_TYPE) macro
Transition vive et douce
|
|
2) Courbes vers le haut et vers le bas.
Problème spécial ici :
il n y a aucune fonction en POV-Ray pour visser un objet !
Par conséquent nous ne pouvons pas faire une transition douce pour les rails et les traverses
avec tourner et / ou cisaillement des voies.
Solution : Nous pouvons diviser les éléments courbés en plusieurs segment pour minimiser
le défaut !
Note : Cela est seulement dimportance pour la représentation des gradients de courbes en POV-Ray !
Avec les modèles réel des rails normalement n'ont pas ce problème !
Au lieu de
//----------------------------------------------//
object{ Track_Up_00("T_L1_45",Step_1,0)
Rotate_Around_Trans(<0,-0*45,0>,<0,0,R1>)
translate<0,0*Step_1*N,0>}
object{ Track_Up_00("T_L1_45",Step_1,0)
Rotate_Around_Trans(<0,-1*45,0>,<0,0,R1>)
translate<0,1*Step_1*N,0>}
//----------------------------------------------// |
il est meilleur utiliser courbes subdivisé en angles plus petit :
//----------------------------------------------//
object{ Track_Up_00("T_L1_15",Step_1,0)
Rotate_Around_Trans(<0,-0*15,0>,<0,0,R1>)
translate<0,0*Step_1*N,0>}
object{ Track_Up_00("T_L1_15",Step_1,0)
Rotate_Around_Trans(<0,-1*15,0>,<0,0,R1>)
translate<0,1*Step_1*N,0>}
object{ Track_Up_00("T_L1_15",Step_1,0)
Rotate_Around_Trans(<0,-2*15,0>,<0,0,R1>)
translate<0,2*Step_1*N,0>}
object{ Track_Up_00("T_L1_15",Step_1,0)
Rotate_Around_Trans(<0,-3*15,0>,<0,0,R1>)
translate<0,3*Step_1*N,0>}
object{ Track_Up_00("T_L1_15",Step_1,0)
Rotate_Around_Trans(<0,-4*15,0>,<0,0,R1>)
translate<0,4*Step_1*N,0>}
object{ Track_Up_00("T_L1_15",Step_1,0)
Rotate_Around_Trans(<0,-5*15,0>,<0,0,R1>)
translate<0,5*Step_1*N,0>}
//----------------------------------------------// |
Note : Subdiviser les courbes avec (GRADIENT_TYPE 1 ou 2)
est seulment à disposition pour les courbes avec les angles 45°, 30° et 15°.
Subdiviser les rails droits est seulment à disposition pour les rails T_222, T_115, T_111, et T_105.
Pour obtenir une transition plus douce nous devons utiliser seulement segments des courbes avec 15° !
Pour les courbes nous devons souvent un rail avec un angle autour un centre de rotation
par utliliser la macro 'Rotate_Around_Trans( RotationVector, Center_of_Rotation )'
del fichier include 'transforms.inc'.
Nou pouvons réplacer ce commandement longue
'Rotate_Around_Trans(<0, 1*15,0>,<0,0,-R1>)'
avec und expression plus courte come
'RTyz( 1*15, -R1 )'
par déclarer la macro suivante :
//----------------------------------------------------//
#include "transforms.inc"
#macro RTyz( Y_Angle, Z_Distance )
Rotate_Around_Trans(<0, Y_Angle,0>,<0,0, Z_Distance>)
#end
//----------------------------------------------------// |
Avec la macro ci-dessus le texte est plus court :
//----------------------------------------------//
object{ Track_Up_00("T_L1_15",Step_1,0)
RTyz(-0*15,R1) translate<0,0*Step_1*N,0>}
object{ Track_Up_00("T_L1_15",Step_1,0)
RTyz(-1*15,R1) translate<0,1*Step_1*N,0>}
object{ Track_Up_00("T_L1_15",Step_1,0)
RTyz(-2*15,R1) translate<0,2*Step_1*N,0>}
object{ Track_Up_00("T_L1_15",Step_1,0)
RTyz(-3*15,R1) translate<0,3*Step_1*N,0>}
object{ Track_Up_00("T_L1_15",Step_1,0)
RTyz(-4*15,R1) translate<0,4*Step_1*N,0>}
object{ Track_Up_00("T_L1_15",Step_1,0)
RTyz(-5*15,R1) translate<0,5*Step_1*N,0>}
//----------------------------------------------// |
|
Courbe vissée par cisaillement vers y - sans transition douce
|
Courbe vissée par cisaillement vers y - avec transition douce
|
Courbe vissée par cisaillement vers y - avec transition douce
|
|
2) Vers le haut et vers le bas avec aiguilles et autres éléments.
On ne peut pas tourner aiguilles, croisments (junctions) vers le haut et
vers le bas avec la macro 'Track_Up_00(...)'!
Pour cet éléments nous avons besoin de cisaillement directement avec
la matrice de POV-Ray.
Cela on peut faire très facil avec la macro suivante,
c'est cisaillement d'un élément de la longuer en x 'Shear_Len'
avec un valeur 'Step_Up'('+' ou '-' en échelle N in metre) vers y :
#macro Shear_Up(Shear_Len,Step_Up) //-----------//
matrix<1,Step_Up*N/Shear_Len ,0,
0,1,0, 0,0,1, 0,0,0>
#end // end of macro ---------------------------// |
L'exemple del'image ci-contre :
//----------------------------------------------//
#declare TD = Track_Distance;
object{ SW_L( SD_1) translate< 0*L111,0,0>}
object{ T_R9_15
Rotate_Around_Trans(<0,-1*15,0>,<0,0, R9>)
translate< 0*L111,0,0>}
object{ T_111 translate< 1*L111,0,0>}
// tracks upward:
object{ Track_Up_00("T_111",Step_1,0)
translate<2*L111,0*Step_1*N,1*TD>}
object{ Track_Up_00("T_111",Step_1,0)
translate<2*L111,0*Step_1*N,0>}
object{ SW_R(SD_2) Shear_Up(L111,Step_1)
translate<3*L111,1*Step_1*N,1*TD>}
object{ Track_Up_00("T_111",Step_1,0)
translate<3*L111,1*Step_1*N,0>}
object{ Track_Up_00("T_111",Step_1,0)
translate<4*L111,2*Step_1*N,1*TD>}
object{ SW_R(SD_3) Shear_Up(L111,-Step_1)
rotate<0,180,0>
translate<5*L111,3*Step_1*N,0>}
//----------------------------------------------// |
|
Cisaillement des aiguilles et des autres objets
|
|