Transformations géométriques
"transform{ ... }"
Transformations en paquet
C'est possible avec cette commande de grouper
des transformations tels que "scale", "rotate", "translate" et /ou "matrix",
dans toute sorte de séquence en un seul mot pour toutes ces transformations.
La syntaxe de pov dans ce cas est .
La syntaxe de pov dans ce cas est :
#declare My_Transformation
= transform{ Free sequence of transformations} |
On l'utilise ainsi :
object{ My_Object transform My_Transformation } |
Voici un exemple :
|
Un objet appelé "Canoe" ainsi que son »trou« approprié à la surface
de l'eau "Canoe_outside" doit être placé dans 3 différentes positions,
de tailles différentes / positions / orientations:
Pour ceci, définir en premier les transformations, qui mènent
aux positions souhaitées :
//------------------------------------- Positions:
#declare Canoe_Position1
= transform { rotate< 0,30,0> translate<0.0,0,1>}
#declare Canoe_Position2
= transform { rotate<-6,20,0> translate<1.5,0,5>}
#declare Canoe_Position3
= transform { rotate< 5, 0,0> scale 0.55
translate< -0.3,0,-2.00>}
//-------------------------------------------------
Ici nous avons les canoes :
//---------------------- Canoes at their positions:
object{ Canoe transform Canoe_Position1}
object{ Canoe transform Canoe_Position2}
object{ Canoe transform Canoe_Position3}
//-------------------------------------------------
et ici dans l'eau, les trous appropriés :
//-------------------------------------------------
difference{
plane{<0,1,0>, 0 }
object{Canoe_outside transform Canoe_Position1 }
object{Canoe_outside transform Canoe_Position2 }
object{Canoe_outside transform Canoe_Position3 }
texture{Polished_Chrome
normal {crackle 1 scale 5
turbulence 1
translate<0,0,5>}
finish {ambient 0.15 diffuse 0.45
reflection 0.40}}
}// end of difference
//----------------------------------------------- end
|
|