Maintenant qu'on a vu comment bouger un objet, on va voir comment le tourner.
Voilà un petit problème :

Comment pourrait-on faire quelque chose comme ça ? La barre bleue du milieu ne pose pas trop de problème, mais comment faire une barre qui soit inclinée comme la rouge ?...
C'est là qu'on a besoin de
rotate ! Ce mot-clé s'emploie exactement comme
translate, mais
rotate fait tourner l'objet au lieu de simplement le déplacer. Il est suivit d'un vecteur, mais ce n'est pas ici un vecteur de position, comme pour
translate, mais un
vecteur d'angle (en degrés). Vous pouvez ainsi faire tourner votre objet autour d'un axe de l'angle de votre choix...
Ca veut dire quoi, concrètement ?
On a une boîte, dont voici le code :
Code : C1
2
3
4
5 | box {
<-0.1,-0.1,-1>
<0.1,0.1,1>
pigment { rgb <0,0,1> }
}
|
Maintenant, on va la tourner autour de l'axe des y de 30° comme sur le schéma :

Attention à ne pas se tromper dans le sens ! Pour tourner la barre de 30° vers la droite, il faudrait la faire tourner de -30° !
Il peut ête difficile de se souvenir du sens, savoir s'il faut un angle positif ou négatif, etc... Un bon moyen de retenir est la méthode main gauche. Pointez votre pouce dans la direction de l'axe, les autres doigts pointent le sens DIRECT, c'est à dire le sens dans lequel tournera l'objet avec un angle positif.
On fait donc tourner la boîte de
30° autour de l'axe des y. Le vecteur angle sera donc <0,30,0> !
Code : C1
2
3
4
5
6 | box {
<-0.1,-0.1,-1>
<0.1,0.1,1>
pigment { rgb <1,0,0> }
rotate <0,30,0>
}
|
Et le tour est joué !
Attention ! Il faut faire attention au centre de la rotation !
Qu'est-ce que ça veut dire ? Regardez ce schéma :

Voilà le code de la boîte :
Code : C1
2
3
4
5
6
7
8 | box {
<-0.85,0.55,-0.01>
<-0.55,0.45,0.01>
pigment {
rgb <0,1,0>
}
}
|
J'aimerai faire tourner cette boîte verte... (comment ça c'est pas une bonne idée ?

) ... de 45° autour de l'axe des z...
Code : C1
2
3
4
5
6
7
8
9 | box {
<-0.85,0.55,-0.01>
<-0.55,0.45,0.01>
pigment {
rgb <0,1,0>
}
rotate <0,0,45>
}
|
Et voilà ce que ça donne :
C'est n'importe quoi ! La boîte part n'importe où !
Bah non, c'est normal ! En effet, la rotation a pour centre <0,0,0>. Voilà donc comment s'est passée la rotation :

Ca explique tout !
Mais alors, comment peut-on tourner la boîte sans la déplacer ??
Souvenez-vous, quand nous avons fait tourner la barre bleue sans changer son centre... Vous savez pourquoi ? Parce que son centre était <0,0,0> ! Et que ce point ne bouge jamais lors d'une rotation.
C'est donc ça la solution ! Pour faire tourner un objet sans le déplacer, il faut qu'il soit centré en 0...
Et si l'on veut qu'il soit ailleurs ?...
On n'a qu'à le bouger
après la rotation ! Avec un
translate situé après le
rotate !
Voici donc ce qu'il aurait fallu faire pour tourner la boîte en la laissant où elle est :
Code : C1
2
3
4
5
6
7 | box {
<-0.15,-0.05,-0.01>
<0.15,0.05,0.01>
pigment { rgb <0,1,0> }
rotate <0,0,45>
translate <-0.7,0.5,0>
}
|
Et voilà le résultat :
