Beschreibungen und Beispiele zum Raytracer POV-Ray von Friedrich A. Lohmüller
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'

  - Insert Menu Zusatz
    & Download
 
                                       

Zufall mit POV-Ray - Teil 1

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

 
 
Szenenbeschreibung für POV-Ray oder .txt

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 -----
Szenenbeschreibung für POV-Ray oder .txt

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 ------
Szenenbeschreibung für POV-Ray oder .txt





1 | 2 | 3 | 4 | 5 | 6

top

© Friedrich A. Lohmüller, 2010
email email: Friedrich.Lohmueller_at_t-online.de
homepage:http://www.f-lohmueller.de
  Besucher: www.webhits.de
seit 08. Mai 1999
Danke für Ihren Besuch!