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 ----- |
|
|
|