Table des matières

Transformations affines

1. Introduction

Les transformations affines sont utilisées pour placer des objets dans l'espace, ou pour effectuer des changements de repère.

2. Transformations vectorielles linéaires

2.a. Définition

On considère une application linéaire d'un espace vectoriel euclidien (à 3 dimensions) qui à tout vecteur v de l'espace associe le vecteur v'=f(v) . Soit (i,j,k) une base orthonormée. Les composantes du vecteur v sont notées (x,y,z) et sont représentées par une matrice colonne. La relation linéaire entre les coordonnées du vecteur et son image s'écrit sous la forme matricielle :

(x'y'z')=(a11a12a13a21a22a23a31a32a33)(xyz)(1)

qu'on écrira aussi :

X'=AX(2)

La transposée permet d'obtenir la relation entre les matrices lignes :

X'T=XTAT(3)

La transformation ainsi définie modifie les vecteurs : on parle dans ce cas d'une transformation active. Le changement des composantes d'un vecteur peut aussi résulter d'un changement de la base : il s'agit alors d'une transformation passive. La même transformation peut être vue comme active ou passive suivant le contexte.

2.b. Isométries

Une isométrie est une transformation linéaire qui conserve les normes des vecteurs. La norme du vecteur image est :

X'TX'=XTATAX(4)

La matrice A doit donc vérifier la condition suivante :

ATA=Id(5)

Dans ce cas, la matrice est donc inversible et son inverse est égale à sa transposée. Une telle matrice est dite orthogonale. La condition d'orthogonalité peut s'écrire explicitement avec les coefficients de la matrice :

a112+a122+a132=1(6)a11a21+a12a22+a13a23=0(7)

Les lignes sont donc les composantes de trois vecteurs formant une base orthonormée. En considérant la transposée de la condition (5), on obtient la même propriété pour les colonnes de la matrice : elles sont les composantes de trois vecteurs formant une base orthonormée.

Le carré du déterminant d'une matrice orthogonale est 1. Le déterminant a donc deux valeurs possibles, 1 ou -1. C'est la signature de l'isométrie.

Notons (a,b,c) la base orthonormée dont les composantes sur la base (i,j,k) sont en colonne dans la matrice A. Par exemple, les composantes de a sont sur la première colonne. On a alors :

(a11a12a13a21a22a23a31a32a33)(100)=(a11a21a31)(8)

L'application transforme donc la base (i,j,k) en la base (a,b,c) . Lorsque la signature est 1, les deux bases ont le même sens. Lorsque la signature est -1, il y a changement de sens de la base.

2.c. Rotation

Une rotation est une isométrie de signature 1. Une rotation transforme une base orthonormée directe en une base orthonormée directe. Les rotations sont utilisées pour orienter les solides dans l'espace, ou bien pour effectuer un changement de base sans changement de sens.

Considérons par exemple la rotation d'angle θ autour du vecteur k , dans le sens direct :

a=cos(θ)i+sin(θ)j(9)b=-sin(θ)i+cos(θ)j(10)c=k(11)

Sa matrice est donc :

Rz(θ)=(cosθ-sinθ0sinθcosθ0001)(12)

Si on adopte le point de vue d'une transformation passive (changement de base), la rotation de la base est une rotation autour du vecteur k et d'angle . Autrement dit, faire tourner les vecteurs d'un angle θ revient à faire tourner la base d'un angle .

Les rotations autour des autres axes sont obtenues de la même manière :

Rx(θ)=(1000cosθ-sinθ0sinθcosθ)(13) Ry(θ)=(cosθ0sinθ010-sinθ0cosθ)(14)

2.d. Inversion

L'inversion, ou symétrie centrale, est définie par la matrice :

Inv=(-1000-1000-1)(15)

L'inversion a une signature de -1. Elle transforme la base directe (i,j,k) en la base indirecte (-i,-j,-k)

2.e. Miroir

Le miroir, ou symétrie par rapport à un plan, est une isométrie de signature -1. L'exemple suivant est une symétrie par rapport au plan xy :

a=i(16)b=j(17)c=-k(18)

Sa matrice est :

Mz=(10001000-1)(19)

Les miroirs sont utilisés pour modifier la chiralité d'un objet ou bien pour inverser un des axes du repère.

2.f. Changement d'échelle

Le changement d'échelle est une transformation linéaire non isométrique définie par :

Sα,β,γ=(α000β000γ)(20)

Un changement d'échelle est utile pour changer les dimensions d'un objet (si les trois coefficients sont égaux) ou pour déformer un objet.

2.g. Composition

Pour composer deux transformations linéaires, il suffit de multiplier les matrices. Par exemple, la composition d'une rotation d'angle π autour du vecteur k suivie d'une inversion s'écrit :

A=(-1000-1000-1)(-1000-10001)=(10001000-1)(21)

On obtient ainsi la symétrie par rapport au plan xy. Pour cet exemple, le produit est commutatif, ce qui signifie que l'ordre des transformations est indifférent. En général, le produit de deux transformations n'est pas commutatif.

3. Transformations affines

3.a. Définition

Une transformation affine agit sur les points de l'espace affine (à 3 dimensions). À tout point M de l'espace elle associe un point M'. Soit (O,i,j,k) le repère et (x,y,z) les coordonnées du point M. Une transformation affine s'obtient en combinant une transformation linéaire du vecteur OM avec une translation:

OM'=f(OM)+b(22)

ce qui donne sous forme matricielle :

(x'y'z')=(a11a12a13a21a22a23a31a32a33)(xyz)+(b1b2b3)(23)

Les transformations affines sont utilisées pour positionner et orienter des solides dans l'espace, pour les dimensionner ou les déformer, ou bien pour effectuer un changement de repère.

3.b. Coordonnées homogènes

Les coordonnées homogènes sont définies en ajoutant une 4ième coordonnée w. Le vecteur colonne représentant le point M est donc :

X=(xyzw)(24)

Cette coordonnée supplémentaire permet de représenter des transformations non linéaires sous forme d'un produit matriciel. En particulier, lorsque w=1, on obtient l'écriture suivante de la transformation affine :

(x'y'z'1)=(a11a12a13b1a21a22a23b2a31a32a33b30001)(xyz1)(25)

La transformation affine est ainsi représentée par une matrice 4x4.

3.c. Composition

La représentation sous forme de produit permet de composer facilement les transformation affines. Considérons par exemple une transformation consistant à faire tourner les points autour de l'axe Oz puis à les translater :

M=(100b1010b2001b30001)(cosθ-sinθ00sinθcosθ0000100001)=(cosθ-sinθ0b1sinθcosθ0b2001b30001)(26)

On constate facilement que ce produit n'est pas commutatif : appliquer d'abord la translation puis la rotation revient à effectuer une rotation autour de l'axe parallèle à Oz passant par le point B défini par OB=-b .

La figure suivante montre le résultat de ces deux transformations sur un carré centré sur l'origine.

figureA.svgFigure pleine page

À gauche la rotation est appliquée avant la translation. À droite, la translation est appliquée avant la translation.

D'une manière générale la composition de N transformations affines s'écrit :

M=MNM3M2M1(27)

La transformation affine M1 est la première appliquée, M2 la deuxième, etc. En pratique, on construit des transformations affines complexes en composant des transformations affines élémentaires (translation, rotation, changement d'échelle).

Il peut être utile de calculer la transformation affine inverse, c'est-à-dire la matrice inverse M-1. Au lieu de chercher à inverser directement la matrice M, on remarque que :

M-1=M1-1M2-1MN-1(28)

Les inverses des transformations affines élémentaires sont connues explicitement. Il suffira donc d'effectuer la composition des inverses en même temps que celle des transformations pour obtenir la matrice inverse. Voici par exemple l'inverse de la composition définie plus haut :

M-1=(cosθsinθ00-sinθcosθ0000100001)(100-b1010-b2001-b30001)(29)

3.d. Transformation des vecteurs

Les composantes d'un vecteur sont transformées par la matrice A, c'est-à-dire par le bloc 3x3 supérieur-gauche de la matrice M de la transformation affine. Pour cela, il suffit d'attribuer la valeur 0 à la 4ième composante du vecteur :

X=(xyz0)(30)

Un vecteur défini par deux points liés à un solide se transforme effectivement de cette manière. Il en va autrement des vecteurs normaux, c'est-à-dire des vecteurs perpendiculaires aux plans tangents aux surfaces. Les vecteurs normaux sont utiles pour calculer les éclairements des surfaces dans les algorithmes de rendu 3D. La figure suivante montre l'effet sur un carré d'une rotation de 45 degrés suivie d'un changement d'échelle sur l'axe x d'un facteur 3 :

figureB.svgFigure pleine page

Les arêtes du polygone se tranforment effectivement comme des vecteurs. On voit bien que les arêtes ne sont plus perpendiculaires aux côtés sur le polygone final, ce qui montre que la transformation des vecteurs normaux doit être différente. Celà est du à la présence d'un changement d'échelle dans la transformation, qui est une transformation affine non isométrique.

Les vecteurs tangents sont liés aux solides et se transforment donc comme des vecteurs. Un vecteur normal est orthogonal à un vecteur tangent, ce qui s'écrit en terme matriciel :

NTT=0(31)

Si M est la matrice de la transformation affine, cette condition s'écrit aussi :

NTM-1MT=0(32)NTM-1T'=0(33)

T' est le transformé de la tangente. Cette égalité devant être vérifiée pour tout vecteur tangent T', on en déduit la transposée de la matrice colonne de N' :

N'T=NTM-1(34)

On prend enfin la transposée :

N'=(NTM-1)T=(M-1)TN(35)

Ce résultat montre que les vecteurs normaux se transforment avec la matrice transposée de la matrice inverse. Lorsque la transformation affine est obtenue en composant seulement des isométries et des translations (pas de changement d'échelle), le bloc A de la matrice M (bloc 3x3 s'appliquant aux vecteurs) est orthogonal et son inverse est égal à sa transposée. Dans ce cas, les vecteurs normaux se transforment comme les autres. Les changements d'échelle sont cependant des opérations très courantes. Par exemple, lorsqu'on trace une fonction y=f(x), l'échelle de l'axe x est généralement différente de celle de l'axe y.

Creative Commons LicenseTextes et figures sont mis à disposition sous contrat Creative Commons.