Transformations Géométriques · 2016. 11. 14. · •Les axes de rotation sont les axes locaux du...
Transcript of Transformations Géométriques · 2016. 11. 14. · •Les axes de rotation sont les axes locaux du...
Transformations
Géométriques
Transformations Géométriques
• Graphique : soucis principal est
– D’afficher des objets 3D
– De les manipuler
– De les observer d’un point de vue arbitraire
• Toutes ces questions sont liées au fait de
vouloir les afficher dans des repères pratiques
pour nous
– Transformations géométriques
Transformations Géométriques
Translation
(1,0)
Ro
tatio
n
(90
°) Scale(0.25,0.25)
Combinaisons
Translation (3,0)
Scale (1,0.5)
Rotation (-30°)
Ici toutes les transformations
sont globales !
Matrices
• Addition
–𝑎 𝑐𝑏 𝑑
+𝑒 𝑔𝑓 ℎ =
𝑎 + 𝑒 𝑐 + 𝑔𝑏 + 𝑓 𝑑 + ℎ
• Multiplication
–𝑎 𝑐𝑏 𝑑
x𝑒 𝑔𝑓 ℎ =
𝑎𝑒 + 𝑐𝑓 𝑎𝑔 + 𝑐ℎ𝑏𝑒 + 𝑑𝑓 𝑏𝑔 + 𝑑ℎ
– Multiplication généralement non commutative• AB ≠ BA
• Si AB = AC, alors nous n’acons pas forcément B = C
– Multiplication est associative et distributive• (AB)C = A(BC)
• A(B+C) = AB + AC
• (A+B)C = AC + BC
– Transposée AT = inversion des lignes et colones
Question
• A = 2 22 2
• B = 1 −43 2
• Que vaut A+BT?
ABT = 2 22 2
+1 3−4 2
= 3 5−2 4
Translation
• En 3 dimensions : définie par vecteur [tx, ty, tz]
x’ = x + tx
y’ = y + ty
z’ = z + tz
• Attention,
[tx, ty, tz] ≠ = [tx, ty, tz]T
tx
ty
tz
Définition
Une translation est un déplacement dans une direction donnée
TranslationDéfinition
Une translation est un déplacement dans une direction donnée
Translation sur y
Homothétie (Scale)
• En 3 dimensions: définie par vecteur [sx, sy, sz]
x’ = Sx * x
y’ = Sy * y
z’ = Sz * z
Définition
L’homothétie (scale) est une expansion ou une contraction sur
un ou plusieurs axes, centrée généralement à l’origine
ScaleDéfinition
L’homothétie (scale) est une expansion ou une contraction sur
un ou plusieurs axes, centrée généralement à l’origine
Original scale all axes scale Y axis
offset from origin distance from origin also scales
Rotation
• Rotation généralement par rapport à l’origine
• Dans le cas d’une rotation d’angle θ autour de l’axe z
x’ = x * cos(θ) – y * sin(θ)
y’ = x * cos(θ) + y * sin(θ)
z’ = z
Définition
La rotation est le mouvement d'un corps autour d'un point ou
d'un axe
Rotation
• Les rotations se font dans le sans
trigonométrique, par rapport à l’origine
rotation of 45o about the Z axis
offset from origin rotation
Rotation
• Les rotations se font dans le sans
trigonométrique, par rapport à l’origine
x
y
Rotation
autour de z
x
x
Rotation
autour de y
y
z
Rotation
autour de x
𝑅𝑥 =1 0 00 𝑐𝑜𝑠ψ −𝑠𝑖𝑛ψ0 𝑠𝑖𝑛ψ 𝑐𝑜𝑠ψ
𝑅𝑦 =𝑐𝑜𝑠𝜃 0 𝑠𝑖𝑛𝜃0 1 0
−𝑠𝑖𝑛𝜃 0 𝑐𝑜𝑠𝜃
ψ 𝜃 𝜑
𝑅𝑧 =𝑐𝑜𝑠𝜑 −𝑠𝑖𝑛𝜑 0𝑠𝑖𝑛𝜑 𝑐𝑜𝑠𝜑 00 0 1
Rotation
• Une rotation dans le sens trigonométrique a
pour inverse la même rotation dans le sens
anti-trigonométrique
• Si la matrice a pour propriété RT = R-1
alors M est orthonormée
– Toutes les matrices orthonormée sont des
matrices de rotation par rapport à l’origine
Combinaisons
Translation (3,0)
Scale (1,0.5)
Rotation (-30°)
Ici toutes les transformations
sont globales !
Combinaisons
Translation (3,0)
Scale (1,0.5)
Rotation (-30°)
Alors que si les transformations
sont locales,
Exercice
Rotation (-30°)
Translation (0,3)
Quelle succession de
transformations locales
nous donne ce résultat ?
Scale (0.5,1)
Exercice
Rotation (-30°)
Scale (0.5,1)
Pouvait-on inverser l’ordre de la
translation et du scale en utilisant
les mêmes transformations?
Translation (0,3)
NON
Combinaisons
• Il est intéressant de combiner plusieurs
transformations pour en créer une complexe
• Si l’on découpe le calcul algébrique à la main compliqué
– Utilisation de matrices
• Toute transformation affine
est une combinaison de
rotations, scale et translation
Coordonnées Homogènes
• Utilité : représenter aussi bien les translations,
scales ou rotations par une matrice
N’importe quelle opération correspond à
une multiplication de matrices
Coordonnées Homogènes
• Base d’un système de coordonnées
homogènes : n vecteurs + position d’origine
𝑣1, 𝑣2, … , 𝑣𝑛, 𝑃𝑂
• Chaque point ou vecteur est représenté par
leur coordonnées
𝑎1⋮𝑎𝑛𝑎𝑂
et plus couramment en 3D par
𝑥𝑦𝑧𝑤
Coordonnées Homogènes
• Vecteurs : par de position aO = 0
• Points : aO = 1
• Exemples
0.21.32.21
1.01.001
0.21.32.20
1.01.000
Vecteurs
correspondantsPoints
Coordonnées Homogènes
1 00 1
0 00 0
0 00 0
1 00 1
Matrice
Identité
1 00 1
0 𝑡𝑥0 𝑡𝑦
0 00 0
1 𝑡𝑧0 1
Translation
𝑠𝑥 00 𝑠𝑦
0 00 0
0 00 0
𝑠𝑧 00 1
Homothétie
1 0 00 𝑐𝑜𝑠ψ −𝑠𝑖𝑛ψ0 𝑠𝑖𝑛ψ 𝑐𝑜𝑠ψ
000
0 0 0 1
Rotation
sur axe x
Orientation : Représentations
• Différentes façon de représenter des
orientations / rotations
– Angles d'Euler
– Angle-Axe (Axis-Angle)
• Matrices non adaptées pour l’interpolation
– Matrices intermédiaires incorrectes
1 0 00 1 00 0 1
000
0 0 0 1
Rx(0)
1 0 0
0 0.5 − 32
0 32 1
0
0
00 0 0 1
Rx(60)
0.5*Rx(0)+0.5*Rx(60)=
1 0 0
0 0.75 − 3 4
0 3 4 0.75
0
0
00 0 0 1
cos−1(0.75) ≠ sin−1( 34)
Angles d’Euler
• Trois angles pour représenter la rotation
• Les axes de rotation sont les axes locaux du
système de coordonnées
– Représentations variées : xyz, xzy, zyx, zxz, yxz…
• Limitation : gimbal lock
Angles d’Euler – XYZ
x
y
z
y’
z’
x
y’
z’ z’’
x’
y’
z’’
x’y’’
x’’
Angle-Axe
• Rotation représentée par
– Un axe de rotation (vecteur)
– Un angle de rotation (scalaire)
• Formules pour calculer la
matrice de rotation à partir
d’un axe et d’un angle𝜃, 𝑣 =
𝑥𝑦𝑧
Quaternion
• Rotation représentées par un vecteur de quatre scalaires [x, y, z, w] (ou [w, x, y, z])– Angle de rotation w
– Axe de rotation [x, y, z]
𝑞 = 𝑤 + 𝑥 𝑖 + 𝑦 𝑗 + 𝑧𝑘 avec 𝑤2 + 𝑥2+ 𝑦2+ 𝑧2= 1
• Similaire à la représentation Angle-Axe, mais propriété mathématiques plus intéressantes (e.g., interpolation)
Petits Rappels
• Algèbre linéaire nécessaire pour calculer les
matrices de rotation
• Exemple basique
– On a besoin de
• l’angle de rotation
• le vecteur de rotation
R?
Petits Rappels
• Angle de rotation 𝜃
– Utilisation du produit scalaire
𝑢. 𝑣 = 𝑢 𝑣 cos 𝜃
𝜃 = cos−1( 𝑢.𝑣𝑢 𝑣 )
• Vecteur axe de rotation
– Utilisation du produit vectoriel
w = 𝑢 × 𝑣
𝜃
𝑢
𝑣
𝑤
Conclusion
• Algèbre linéaire important de façon
générale en graphique
– Calcul de la direction des normales
– Positionnement et orientation de la camera
– Projection du monde 3D vers écran 2D
– …
• Tout (ou presque) est lié aux transformations
géométriques