POV-Ray Raytracer Beschreibungen und Beispiele von Friedrich A. Lohmüller
   Zufall mit POV-Ray (Teil 1)
English English English
Italiano Italiano
Français français

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







0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8
top

© Friedrich A. Lohmüller, 2015
www.f-lohmueller.de
 
Visitors:
(since May-1999)
Thanks for your visit!