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.