Home
- POV-Ray Tutorial
> Zufall mit POV-Ray
> Zufall und Schleifen
- quadratisch + kubisch
- Farben + Maßstab
- Kippen + Neigen
- Bäume mit Zufall
- Include-Datei 'rand.inc'
- height_field gefüllt
- Blume mit Zufall
- Insert Menu Zusatz
& Download
|
|
Zufallszahlen und Schleifen
|
POV-Ray besitzt eine Funktion zur Erzeugung verschiedener
Folgen von Zufallszahlen. Bei Verwendung dieser Zufallszahlenfunktion in While-Schleife
lassen sich in POV-Ray sehr realistische zufällige Verteilungen simulieren.
Zur Demonstration der Wirkung dieser Zufallszahlen-Funktion werden im folgenden
While-Schleifen (engl.: while loop) zum regelmäßigen Anordnen von Objekten verwendet.
Grundsätzliche zur Verwendung von Schleifen in POV-Ray
wurde bereits im Abschnitt "Schleifen mit POV-Ray" erklärt.
Hinweis: Alle POV-Ray-Szenendateien der folgenden Beispiele sind downloadbar
(mit der Endung: .pov, alternativ auch als .txt Text-Dateien!).
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.25
texture{
pigment{color rgb<1,0.65,0>}
finish {phong 1}
} // end of texture
} // end of sphere ------------
#declare NrX = -10; // start
#declare EndNrX = 10; // end
#while (NrX < EndNrX+1)
object{Ball translate<NrX*0.5,0,0>}
#declare NrX = NrX + 1; //next Nr
#end // ------------ end of loop ----- |
|
|
Mittels "#declare Random_1 = seed (1153);" definiert man
die zu verwendende Zufallszahlenfolge.
Der Aufruf dieser Werte erfolgt durch
"rand( Random_1 )". Jeder Aufruf dieser Art erzeugt eine andere
Zufallszahl mit einem Wert zwischen 0 und 1.
|
//------------------------------------
#declare Rnd_1 = seed (1153);
//------------------------------------
#declare Ball =
sphere{<0,0,0>,0.5
texture{
pigment{color rgb<1,0.65,0>}
finish {phong 1}
} // end of texture
} // end of sphere ------------
#declare NrX = -5; // start
#declare EndNrX = 5; // end
#while (NrX < EndNrX+1)
object{Ball
translate<NrX, rand(Rnd_1),0>}
#declare NrX = NrX + 1; //next Nr
#end // ------------ end of loop ----- |
|
|
Bei der Definition der Zufallszahlenfolge
durch "#declare Random_1 = seed (1153);" erzeugt jede
andere "seed"-Zahl eine andere Zufallszahlenfolge. Dadurch kann
man ausprobieren of eine andere Zahl als "seed" (=Same) nicht
vielleicht eine "nettere" Zufallszahlenfolge
produziert.
Die ist ein reproduzierbaren Zufall, d.h. bei jedem erneuten Rendern derselben
Szenen-Datei wird wieder genau die gleich Folge von Werten zwischen 0 und 1 produziert.
Man nennt diese so gewonnenen Zufallszahlen daher auch korrekter Pseudo-Zufallszahlen.
Einige Beispiele für die Verwendung von 'rand(...)'
Werte zwischen 0 und 1: "rand( Random_1)"
Werte zwischen 0 und 5: "5*rand( Random_1)"
Werte zwischen -1 und +1: " -1+2* rand( Random_1)" oder "2*(0.5-rand( Random_1))"
Ganzzahlen zwischen 0 und 10: " int( 10*rand( Random_1) ) "
|
//-----------------------------------
#declare Rnd_1 = seed (1153);
#declare Rnd_2 = seed (553) ;
//-----------------------------------
#declare Ball_1 =
sphere{<0,0,0>,0.5
texture{
pigment{color rgb<1,0.65,0>}
finish {phong 1}
} // end of texture
} // end of sphere -----------
#declare Ball_2 =
sphere{<0,0,0>,0.5
texture{
pigment{color <1,0.2.0,0>}
finish {phong 1}
} // end of texture
} // end of sphere -----------
#declare NrX = -5; // start
#declare EndNrX = 5; // end
#while (NrX < EndNrX+1)
object{Ball_1
translate<NrX,5*rand(Rnd_1),0>}
object{Ball_2
translate<NrX,2*rand(Rnd_2),0>}
#declare NrX = NrX + 1; //next Nr
#end // ---------- end of loop ------ |
|
|
top
|
© Friedrich A. Lohmüller, 2015
www.f-lohmueller.de
|
|
Visitors:
(since May-1999)
Thanks for your visit!
|
|