V. Les transformations▲
V-A. Les transformations géométriques▲
V-A-1. La translation▲
Elle permet de déplacer un objet d'un vecteur donné. Exemple
sphere
{
// centre et rayon
<4,0,0>,1
// translation du vecteur (1,2,3)
translate <1,2,3>
}
V-A-2. La rotation▲
Elle permet de faire tourner un objet autour d'un axe, d'un angle donné en degrés. La rotation s'effectue autour de l'axe passant par O et dirigé selon le vecteur passé en argument. Exemple :
sphere
{
// centre et rayon
<4,0,0>,1
// rotation de 50° autour de l'axe y
rotate y*50
}
y est un mot réservé du langage, il correspond au vecteur <0,1,0>
L'axe de rotation passe toujours par O, ainsi, un objet peut se retrouver déplacé après une rotation.
V-A-3. L'homothétie▲
Elle permet d'agrandir / rapetisser un objet selon un facteur donné. Le centre d'homothétie est le centre du repère. Le facteur donné est un vecteur décrivant les homothéties à réaliser suivant x,y et z. Exemple :
sphere
{
// centre et rayon
<4,0,0>,1
// agrandissement une fois suivant x, 2 fois suivant y et 3 fois suivant z
scale<1,2,3>
}
Si l'une des composantes du vecteur est nulle, POV-Ray la remplace par 1 et vous averti via un Warning :
Parse Warning : Illegal Value: Scale by 0.0. Changed to 1.0
Le centre d'homothétie est O, ainsi, un objet peut se retrouver déplacé après une homothétie.
V-B. Les opérations booléennes (CSG)▲
Ces opérations s'effectuent sur des objets, exemple :
[opération booléenne]{
objet1
objet2
objet3
[attributs pour définir un aspect]
[attributs pour définir les transformations géométriques à appliquer]
}
Les opérations booléennes nécessitent au moins 2 objets. Une opération booléenne sur un seul objet vous donnera comme résultat ce même objet, vous aurez juste un Warning lors de l'analyse du code :
Parse Warning : should have at least two objects in csg
V-B-1. L'union▲
Elle permet de regrouper plusieurs objets dans le but de leur appliquer des modifications communes. Cette opération correspond au OU logique.
V-B-2. L'intersection▲
Elle permet créer l'intersection de plusieurs objets. Cette opération correspond au ET logique. Exemple :
intersection{
box{<0,0,-.2>,<1,1,1>}
sphere{<0,0,0>,.6}
pigment{Red}
}
V-B-3. La différence▲
Elle permet créer une différence entre plusieurs objets. Cette opération créé un nouvel objet composé tous les points du premier objet qui ne sont pas dans les autres objets. Exemple :
difference{
box{<0,0,-.2>,<1,1,1>}
sphere{<0,0,0>,.6}
pigment{Red}
}