Etat de la matrice après transformation de base
glTranslate (tx, ty, tz)
1 |
0 |
0 |
tx |
0 |
1 |
0 |
ty |
0 |
0 |
1 |
tz |
0 |
0 |
0 |
1 |
glScale(sx, sy, sz)
sx |
0 |
0 |
0 |
0 |
sy |
0 |
0 |
0 |
0 |
sz |
0 |
0 |
0 |
0 |
1 |
glRotate(a,1,0,0)
1 |
0 |
0 |
0 |
0 |
cos(a) |
sin(a) |
0 |
0 |
-sin(a) |
cos(a) |
0 |
0 |
0 |
0 |
1 |
glRotate(a,0,1,0)
cos(a) |
0 |
-sin(a) |
0 |
0 |
1 |
0 |
0 |
sin(a) |
0 |
cos(a) |
0 |
0 |
0 |
0 |
1 |
glRotate(a,0,0,1)
cos(a) |
sin(a) |
0 |
0 |
-sin(a) |
cos(a) |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
glRotate(a,x,y,z) avec ||(x,y,z)|| = 1
x2(1-cos(angle))+cos(angle) |
xy(1-cos(angle))-zsin(angle) |
xz(1-cos(angle))+ysin(angle) |
0 |
xy(1-cos(angle))+zsin(angle) |
y2(1-cos(angle))+cos(angle) |
yz(1-cos(angle))-xsin(angle) |
0 |
xz(1-cos(angle))-ysin(angle) |
yz(1-cos(angle))+xsin(angle) |
z2(1-cos(angle))+cos(angle) |
0 |
0 |
0 |
0 |
1 |
Transformations inverses
Cela paraît évident, mais pour rappel:
L'inverses d'une translation est : T-1(tx,ty,tz) = T(-tx,-ty,-tz)
L'inverse d'une homothétie : S-1(sx,sy,sz) = S(1/sx,1/sy,1/sz)
L'inverse d'une rotation : R-1(angle,x,y,z) = R(-angle,x,y,z)
Les symétries selon un axe correspondent à des changements d'échelle avec un facteur -1 pour cet axe et 1 pour les autres.