Page d'Accueil
- Tutoriel POV-Ray
Boucles en POV-Ray
1. 'For' et 'While'
Comparaison
2. Transformations
Linéaires
3. Transformations
Circulaires
4. Moebius etc.
>5. Vis, Hélices
et Spirales
6. Spirales
avec Torsion
7. Coquilles
d'Escargot
et Ammonites
8. Spirales sphériques 1
9. Spirales sphériques 2
10. Spirales Fibonacci
- Téléchargement
|
Boucles avec Vis et Spirales.
La superposition de la rotation d'une sphère,
et d'une translation le long de l'axe de cette rotation,
donne une vis formée par l'emplacement de ces éléments :
|
#declare Ball =
sphere{<0,0,0>,0.35 scale <1,1,1>
texture{
pigment{ color rgb<1,0.55,0>}
finish { phong 1}}}
//-------------------------------------
#declare Radius = 3.00;
#declare N_rev = 3;//NumberOFrevolution
#declare N_p_rev=50;//ElementsPERrev.
#declare H_p_rev=0.8;//Heightdiff./rev.
#declare H = H_p_rev/N_p_rev;
//-----------------------------------
#declare Nr = 0; //start
#declare EndNr = N_rev*N_p_rev;// end
#while (Nr < EndNr)
object{ Ball
translate<Radius,Nr*H,0>
rotate<0,Nr*360/N_p_rev,0>}
#declare Nr = Nr+1; // next Nr
#end // ---------- fin de boucle ----- |
|
|
Si nous augmentons le nombre d'éléments par révolution,
ces éléments élémentaires se transforment dans une nouvelle forme.
Le piège de cette technique : le nombre d'éléments et donc le besoin de
RAM et de temps de calcul, qui augmentent très vite :
ici nous avons 2500 cylindres par révolution !
//------------------------------------
#declare N_p_rev=2500;
//------------------------------------ |
|
|
Si nous ajoutons une translation radiale constante,
en restant à hauteur nulle, nous obtenos une spirale :
|
#declare Ball =
sphere {<0,0,0>,0.45
texture{pigment{color rgb<1,0.6,0>}
finish { phong 1}}}
//---------------------------------
#declare Radius0 = 0.0;
#declare N_rev = 4;
#declare N_p_rev = 500;
#declare D_p_rev = 1.0;
#declare D = D_p_rev/N_p_rev;
//--------------------------------
#declare Nr = 0; //start
#declare EndNr=N_rev*N_p_rev;//end
#while (Nr< EndNr)
object{Ball
translate<Radius0+Nr*D,0,0>
rotate<0,Nr*360/N_p_rev,0>
}
#declare Nr = Nr + 1; // next Nr
#end // ------- fin de boucle ----- |
|
|
|