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 und Lineare Transformationen
Demonstration einiger elementarer Anwendungen der While-Schleife in POV-Ray.
Hier werden Schleifen (engl.: loop) zur regelmäßigen Anordung von Objekten verwendet.
Die folgenden Beispiele zeigen einfache und ineinander geschachtelte Schleifen.
|
Einfache Schleife:
Kugeln werden längs der x-Achse
von X = -5 bis X = +5 plaziert:
#declare Ball =
sphere{ <0,0,0>,0.5
texture{ pigment{ color Red }
finish { phong 1 }
}
} //--------------------------
//------------------------------------
#declare X = -5; // start
#declare End_X = 5; // end
#while ( X <= End_X )
object{ Ball translate < X, 0.5, 0> }
#declare X = X + 1; // next
#end //-------------- end of loop ---- |
|
Um eine Kollision mit fest vordefinierten Bezeichnern
und in POV-Ray reservierten Wörtern zu vermeiden,
wird dringend empfohlen, als Bezeichner für Variable
und Objekte, welche vom Benutzer definiert werden,
nur Wörter zu verwenden, die mit Großbuchstaben beginnen.
D.h. da x = <1,0,0> ein reserviertes Wört ist,
verwende man statt dessen z.B. "X".
|
|
|
Verschachtelte Schleife (nested loop):
Packt man eine vorhandene Schleife, in eine
weitere Schleife, so erhält man
eine von Objekten bedeckte rechteckig Fläche:
#declare Boxy =
box{ <0,0,0>,< 1,1,1> scale 0.5
texture{ pigment{ color White }
finish { specular 0.5}}}
//------------------------------------
#declare Dx = 1.00; // distance in x
#declare Dz = 1.00;
#declare NrX = 0; // startX
#declare EndNrX = 7; // endX
#while (NrX < EndNrX) // <-- loop X
#declare NrZ = 0; // startZ
#declare EndNrZ = 7; // endZ
#while (NrZ < EndNrZ) // <- loop Z
object{ Boxy
translate<NrX*Dx, 0, NrZ*Dz>}
#declare NrZ = NrZ + 1; // next NrZ
#end // --------------- end of loop Z
#declare NrX = NrX + 1;// next NrX
#end // ------------- end of loop X |
|
|
Mehrfach verschachtelte Schleife:
Eine vorhandene Doppel-Schleife läßt sich
in eine weitere Schleife einpacken.
Dadurch erhält man einen
von gleichartigen Objekten gebildeten Quader:
#declare Dx = 1.00;
#declare Dy = 1.00;
#declare Dz = 1.00;
//-------------------------------------
#declare NrX = 0; // startX
#declare EndNrX = 5; // endX
#while (NrX < EndNrX)
#declare NrY = 0; // startY
#declare EndNrY = 5; // endY
#while (NrY < EndNrY)
#declare NrZ = 0; // startZ
#declare EndNrZ = 5; // endZ
#while (NrZ < EndNrZ)
object{ Boxy
translate
<NrX*Dx,NrY*Dy,NrZ*Dz>
}
#declare NrZ = NrZ+1;// next NrZ
#end // ---------- end of loop Z
#declare NrY = NrY+1;// next NrY
#end // ---------- end of loop Y
#declare NrX = NrX+1;// next NrX
#end // ----------- end of loop X ----- |
|
|
Im Dreidimensionalen erscheinen damit unsere Möglichkeiten in
Sachen reine Translations-Bewegungen (Parallelverschiebungen) mit Schleifen zunächst erschöpft.
|
|