|
Dieser Abschnitt möchte einige elementare Anwendungen der While-Schleife in POV-Ray
demonstrieren. Hierbei wird die Schleife (engl.: loop) zum regelmäßigen
Anordnen von Objekten verwendet. Die folgenden Beispiele sollen kurz einfache und
ineinander geschachtelten Schleife demonstrieren.
Hinweis: Alle POV-Ray-Szenendateien der folgenden Beispiele sind downloadbar
(mit der Endung: .pov, alternativ auch als .txt Text-Dateien!).
Die meisten der POV-Ray-Beispielszenen verwenden die Include-Datei
"axis_xyz.inc" für das Koordinatensystem. Diese Datei kann hier
downloadet werde:
als eine ".inc"-Datei oder
als eine ".txt"-Datei
(Speichern Sie letztere mit der veränderten Endung ".inc"!).
Betrachten wir hier erst einmal eine einfache Schleife, welche
kleine Kugeln 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 {ambient 0.15
diffuse 0.85
phong 1}
}
}
#declare NrX = -5; // start
#declare EndNrX = 5; // end
#while (NrX < EndNrX+1)
object{Ball translate <NrX,0,0>}
#declare NrX = NrX + 1; //next Nr
#end // ------------ end of loop ---
|
Szenenbeschreibung für POV-Ray: .pov
oder .txt
|
|
Packt man eine vorhandene Schleife, in ein eine weitere Schleife,
welche die z-Wert von z = 0 bis z = +5 durchläuft, so erhält
man eine von Objekten bedeckte quadratische Fläche:
|
//---------------------------------
#declare Boxy =
box {<0,0,0>,< 1,1,1>
scale 0.5
texture{pigment{color White}
finish {ambient 0.15
diffuse 0.85
phong 1}}}
#declare DistanceX = 1.00;
#declare DistanceZ = 1.00;
#declare NrX = 0; // startX
#declare EndNrX = 7; // endX
#while (NrX < EndNrX) // <-loop X
#declare NrZ = 0; // start
#declare EndNrZ = 7; // end
#while (NrZ < EndNrZ)//<- loop Z
object{Boxy
translate<NrX*DistanceX,
0,NrZ*DistanceZ>}
#declare NrZ = NrZ+1; // next NrZ
#end // ----------- end of loop Z
#declare NrX = NrX+1; // next NrX
#end // ------- end of loop X ---
|
Szenenbeschreibung für POV-Ray: .pov
oder .txt
|
|
Eine vorhandene Doppel-Schleife läß in ein eine weitere
Schleife verpacken welche die y-Werte von y = 0 bis y = +5 durchläuft.
Dadurch erhält man eine 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 -
|
Szenenbeschreibung für POV-Ray: .pov
oder .txt
|
|
Im dreidimensionalen sind damit unsere Möglichkeiten in
Sachen lineare Transformation mit Schleifen zunächst erschöpft.
|