précédent suivant haut Contents Index

TRANSFORMATIONS MATRICIELLES


représentation de fonctions planes par matrices 2x2

ATTENTION : les matrices sont représentées par des tableaux. En fait quand il y a deux bordures accollées il faut s'imaginer que l'on a à cet endroit la limite de la matrice (je n'ai pas le courage de tout passer en GIF).

soit


X'

=

a
b

*

X

donc

X' = aX + bY


Y'



c
d



Y



Y' = cX + dY
On peut traiter certaines transformations dans le plan par cette méthode :

identité


1
0



0
1

dilatation


Dx
0

si Dx et/ou Dy >1 on obtient une dilatation


0
Dy


symétrie


Sx
0

symétrie / (0,0) : Sx=Sy=-1. symétrie / axe X: Sx=1,


0
Sy

Sy=-1. symétrie / axe Y : Sx=-1, Sy=1.

homothétie


1
Hxy

si Hxy ou Hyx =0 : cisaillement


Hyx
1

homothétie si Hxy=Hyx

rotation


cos [theta]
-sin [theta]

rotation autour du point 0,0


sin [theta]
cos [theta]


remarques :

- le point (0,0) n'est jamais modifié.
- soit l'aire d'une surface S, après transformation :

     |a b| 
S'=S*|c d| 
On n'a donc pas de changement d'aire si le déterminant vaut 1 (symétrie, rotation...)
- matrice inverse : cas général :
a.X + b.Y = X' on cherche X,Y en fonction de X',Y'
c.X + d.Y = Y' par la méthode de Cramer
D=a.d-b.c (matrice non inversible si déterminant nul)
d'où X=(d.X'-b.Y')/D Y=(-c.X'+a.Y')

la matrice inverse de

a
b

est
1/D
*

d
-b



c
d





-c
a

cas particuliers de matrices inverses :

dilatation : 1/Dx 1/Dy
symétrie : même matrice
rotation : -[theta]

application : symétrie par rapport à une droite faisant un angle [theta] avec Ox :


X'


=

cos [theta]
-sin [theta]


*

1
0

*

cos [theta]
sin [theta]

*

X



Y'



sin [theta]
cos [theta]



0
-1



-sin [theta]
cos [theta]



Y

On effectue d'abord une rotation des objets de -[theta], puis une symétrie / Ox, puis on retourne en position initiale (+[theta]). On obtient donc après multiplication des 3 matrices de transformation :


X'


=

cos2[theta]-sin2[theta]
2.cos[theta].sin[theta]


*

X




Y'



2.sin[theta].cos[theta]
sin2[theta]-cos2[theta]



Y


Remarque : le produit de matrices n'est pas commutatif mais associatif.

matrices 3x3 (coordonnées homogènes 2D)

La méthode précédente ne peut prendre en compte les translations. On utilise alors les coordonnées homogènes, c'est à dire que l'on représente un point par un triplet [ux,uy,u]. Ceci permet de dissocier la forme de la taille des objets. On se limite ici au cas u=1.


X'




a
b
ty



X



X' = aX + bY + tx


Y'

=

c
d
tx

*

Y

donc

Y' = cX + dY + ty


1



0
0
1



1



1 = 1
Une translation correspond à a=b=c=d=0, une transformation vue plus haut correspond aux mêmes a,b,c,d et tx = ty = 0. La troisième ligne de la matrice est obligatoire pour l'homogénéité des calculs, mais il n'est évidement pas nécessaire de la stocker ni de vérifier à chaque calcul la troisième équation (1 = 1).

matrice inverse : cas général, par la même méthode que ci-dessus, on trouve :


a
b
tx




d
-b
ty.b-tx.d

inverse de

c
d
ty

= 1/(a.d-b.c)
*

-c
a
tx.c-ty.a



0
0
1




0
0
ad-bc

Vous pouvez faire le produit pour vérifier. Le dernier terme de la diagonale vaut 1, la matrice inverse est également une matrice de transformation homogène.

Pour les opérations simples, on trouvera assez facilement l'inverse par l'interprétation physique.

transformations 3D

On utilise la même méthode mais avec des matrices 4x4 :


X'




1
0
0
tx



X


translation :

Y'

=

0
1
0
ty

*

Y




Z'



0
0
1
tz



Z




1



0
0
0
1



1




X'




dx
0
0
0



X


dilatation :

Y'

=

0
dy
0
0

*

Y




Z'



0
0
dz
0



Z




1



0
0
0
1



1




X'




Ex
0
0
tx



X



symétrie :

Y'

=

0
Ey
0
ty

*

Y


/(0,0,0) : Ex = Ey = Ez =-1


Z'



0
0
Ez
tz



Z


/plan ij : Ei = Ej = 1, Ek =-1


1



0
0
0
1



1





X'




1
0
0
0



X


rotation /X :

Y'

=

0
c
-s
0

*

Y

c = cos [theta], s = sin [theta]


Z'



0
s
c
0



Z




1



0
0
0
1



1


X' c 0 s 0 X X' c -s 0 0 X
rotation /Y : Y' = 0 1 0 0 * Y rotation /Z : Y' = s c 0 0 * Y
Z' -s 0 c 0 Z Z' 0 0 1 0 Z
1 0 0 0 1 1 1 0 0 0 1 1

Matrice inverse : cas général :



X'




a
b
c
tx



X




X' - tx



a
b
c



X



Y'

=

d
e
f
ty

*

Y


donc :

Y'- ty

=

d
e
f

*

Y



Z'



g
h
i
tz



Z




Z' - tz



g
h
i



Z



1



0
0
0
1



1
















Le déterminant D de cette matrice 3x3 vaut donc D = déterminant= a(ei-fh)-d(bi-ch)+g(bf-ec)

Si D=0, il n'y a pas de solution. La matrice n'est pas inversible car la transformation n'est pas bijective (le volume V initial est transformé en V'=D*V, vaut 0 en cas d'une matrice de projection 3D -> dimension inférieure).

si D différent de 0 alors

X' - tx

b
c

a
X' - tx
c

a
b
X' - tx
X=1/D
Y'- ty
e
f
Y=1/D
d
Y'- ty
f
Z=1/D
d
e
Y'- ty

Z' - tz
h
i

g
Z' - tz
i

g
h
Z' - tz
en développant les calculs et réorganisation sous forme X =a'X'+b'Y'+c'Z'+j' on obtient la matrice inverse.


précédent suivant haut Contents Index