Home
- POV-Ray Tutorial
Schleifen mit POV-Ray
1. For + While
Vergleich
2. Lineare
Transformationen
3. Zirkuläre
Transformationen
4. Möbius etc.
>5. Schrauben
& Spiralen
6. Verdrehte
Spiralen
7. Schnecken
& Ammoniten
8. Sphärische Spiralen1
9. Sphärische Spiralen2
10. Fibonacci Spiralen
- Download
|
Schleifen mit Schrauben und Spiralen
Überlagert man der Rotations-Bewegung der Kugel um eine Achse eine
Translation parallel zu dieser Achse erhält man eine schraubenföige Anordnung der einzelnen Elemente:
|
#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;//Anz.d. Umdrehungen
#declare N_p_rev= 50;//Anz.proUmdrehung
#declare H_p_rev=0.8;//Hoehendifferenz
#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 // ------------- end of loop ----- |
|
|
Erhöht man die Anzahl der Elemente pro Drehung, so fließen die
einzelnen Elemente zu einer neuen Form zusammen. Nachteil dieser Technik: Die Anzahl der Elemente
und damit der Speicherbedarf sowie die Rechenzeit erhöhen sich rasch:
hier sind es pro Windung 2500 Kugeln!
//------------------------------------
#declare N_p_rev=2500;
//------------------------------------ |
|
|
Addiert man zu Rotation auf dem Nullniveau eine konstante radiale Translation,
so ergibt sich eine Spiralform:
#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 // --------------- end of loop -- |
|
|
|