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
sphère
{
// 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 :
sphère
{
// 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 :
sphère
{
// 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 avertit 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 de créer l'intersection de plusieurs objets. Cette opération correspond au ET logique. Exemple :
intersection{
box{<0,0,-.2>,<1,1,1>}
sphère{<0,0,0>,.6}
pigment{Red}
}
V-B-3. La différence▲
Elle permet de créer une différence entre plusieurs objets. Cette opération crée un nouvel objet composé de tous les points du premier objet qui ne sont pas dans les autres objets. Exemple :
difference{
box{<0,0,-.2>,<1,1,1>}
sphère{<0,0,0>,.6}
pigment{Red}
}