Home- Page d'accueil
- Tutoriel POV-Ray
- Hasard en POV-Ray
> Nombres aléatoires
- Quadratique et cubique
- 'color' et 'scale'
- Basculer et incliner
- Les arbres avec hazard
- Le fichier 'rand.inc'
- height_field rempli
- Fleur aléatoire
- Insert Menu Add-on
& Téléchargement
|
|
Les nombres aléatoires en boucles.
|
En POV-Ray il y a une fonction intégrée laquelle nous permettons d'obtenir des séries des nombres aléatoires.
Avec l'usage des ces nombres aléatoires en boucle 'while' nous pouvons simuler en POV-Ray des distibutions
avec des apparences très réaliste et très naturelles.
À vrai dire cette fonction renvoie "nombres pseudo-aléatoire", autant dire que cela
permettent d'obtenir des nombres aléatoires dont la succession ne varie pas d'un rendu à l'autre - un hazard reproductible.
Pour démontrer cet effet de cette fonction nous utilisons un boucle 'while' pour arranger des objets
à intervalles égaux.
Le fondaments des boucles 'while' avec POV-Ray
sont expliqué dans la section " Boucles 'while' avec POV-Ray ".
Note : Tous les fichiers de scènes POV-Ray des exemples suivants on peut télécharger
(avec l'extension: .pov, ou come fichiers .txt !).
Au début nous utilissons un boucle simple pour arranger des sphères petites le long du axe x
de x = -5 à x = +5:
|
//---------------------------------
#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 ---- |
|
|
Avec "#declare Random_1 = seed (1153);" nous definissons une succession infiniment longue de valeurs aléatoires
avec un paramètre appelé seed ("graine", en anglais).
Nous engendrons ces valeurs par
"rand( Random_1 )". Chaque appel de ce commande engendre produit un autre nombre aléatoire
avec le valeur distribué entre 0 et 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 ---- |
|
|
Dans la définition d'une succession infiniment longue de valeurs aléatoires
par "#declare Random_1 = seed (1153);" chaque 'seed' donnera toujours une autre suite de nombres.
Pour cela nous pouvons essayer très facile une autre suite de nombres avec un 'seed' différent
- peut-être un autre 'seed' produit une suite de nombres plus joli.
Note: C'est un hazard reproductible, c'est à dire : un même 'seed' donnera toujours la même suite de nombres
avec valeurs entre 0 et 1. ( nombres pseudo-aléatoire ).
Quelques Exemples per l'usage de 'rand( ... )' :
Valeurs entre 0 et 1 : " rand( Random_1) " .
Valeurs entre 0 et 5 : " 5*rand( Random_1) "
Valeurs entre -1 et +1 : " -1+2* rand( Random_1) " ou " 2*(0.5-rand( Random_1)) "
Entiers entre 0 et 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!
|
Thanks for your visit!
|