transformations g©om©triques
TRANSCRIPT
IMN428Chapitre 2 - Transformations géométriques
Olivier Godin
Université de Sherbrooke
22 janvier 2014
Transformations géométriques 1 / 104
Plan de la présentation
1 Vecteurs et matrices
2 Systèmes de coordonnées
3 Transformations affines 2D
4 Transformations affines 3D
5 Gestion des matrices dans OpenGL
6 Transformation fenêtre clôture
7 Changement de repère
8 RéférencesTransformations géométriques 2 / 104
Vecteurs et matrices
1 Vecteurs et matrices
2 Systèmes de coordonnées
3 Transformations affines 2D
4 Transformations affines 3D
5 Gestion des matrices dans OpenGL
6 Transformation fenêtre clôture
7 Changement de repère
8 RéférencesTransformations géométriques 3 / 104
Propriétés des vecteurs
Les vecteurs sont utiles pour représenter des positions (points,objets, caméra), des orientations (directions, normales), desmouvements (translation), des informations sur les surfaces(couleur, propriétés lumineuses) etc.
Dans le cours d’infographie, on rencontrera des vecteurs à 2, 3 et 4dimensions : (x , y), (a,b, c), (α, β, γ, δ).
Transformations géométriques 4 / 104
Propriétés des vecteurs
Soient deux scalaires, a et b et 3 vecteurs, P, Q et R. On a lespropriétés suivantes :
(a) P + Q = Q + P
(b) (P + Q) + R = P + (Q + R)
(c) (ab)P = a(bP)
(d) a(P + Q) = aP + aQ
(e) (a + b)P = aP + bP
Transformations géométriques 5 / 104
Propriétés des vecteurs
Les vecteurs s’additionnent et se soustraient composante àcomposante, c’est-à-dire que si
P = (P1,P2, . . . ,Pn) et Q = (Q1,Q2, . . . ,Qn),
alors
P + Q = (P1 + Q1,P2 + Q2, . . . ,Pn + Qn).
Transformations géométriques 6 / 104
Propriétés des vecteurs
On évalue l’amplitude (ou la norme) d’un vecteur V de dimension navec la formule
|V| =
√√√√n∑
i=1
V 2i .
Par exemple, dans le cas d’un vecteur de dimension 3 (Vx ,Vy ,Vz), onaura
|V| =√
V 2x + V 2
y + V 2z .
Un vecteur ayant une norme de 1 sera dit vecteur unitaire.
Transformations géométriques 7 / 104
Propriétés des vecteurs
Soit un scalaire a et deux vecteurs P et Q. On a les propriétéssuivantes :
(a) |P| ≥ 0
(b) |P| = 0 si et seulement si P = (0,0, . . . ,0)
(c) |aP| = |a| |P|(d) |P + Q| ≤ |P|+ |Q|
Cette dernière propriété porte le nom d’inégalité du triangle.
Transformations géométriques 8 / 104
Propriétés des vecteurs
Un vecteur V non nul (au moins une des composantes doit êtredifférente de 0) peut être ramené à un vecteur unitaire en le multipliantpar 1
|V| . Cette opération s’appelle la normalisation.
Attention à ne pas confondre la normalisation avec le concept devecteur normal. Un vecteur normal est un vecteur perpendiculaire àune surface en un point donné.
Transformations géométriques 9 / 104
Produit scalaire
Le produit scalaire sert à mesurer la différence entre deuxdirections données par des vecteurs. On évalue le produit scalaire dedeux vecteurs de taille n, P et Q, à l’aide de la formule
P ·Q =n∑
i=1
PiQi
Cette formule peut aussi être exprimée sous la forme d’un produitmatriciel :
P ·Q = PTQ =(P1,P2, . . . ,Pn
)
Q1Q2...
Qn
.
Transformations géométriques 10 / 104
Produit scalaire
Soient P et Q, deux vecteurs detaille n. Le produit scalaire P ·Qpeut aussi être évalué avec laformule
P ·Q = |P| |Q| cosα,
où α est l’angle planaire entre lesvecteurs P et Q.
16 2. Vectors
P
Q
P − Q
α
Figure 2.2. The dot product is related to the angle between two vectors by the equation cosĮ⋅ =P Q P Q .
Proof. Let Į be the angle between the vectors P and Q, as shown in Figure 2.2. By the law of cosines (see Appendix B, Section B.6), we know
2 2 2 2 cosĮ− = + −P Q P Q P Q . (2.13)
This expands to
( ) 2 2 2
1 1 1
2 cosn n n
i i i ii i i
P Q P Q Į= = =
− = + −¦ ¦ ¦ P Q . (2.14)
All the 2iP and 2
iQ terms cancel, and we are left with
1
2 2 cosn
i ii
PQ Į=
− = −¦ P Q . (2.15)
Dividing both sides by 2− gives us the desired result. �
A couple of important facts follow immediately from Theorem 2.4. The first is that two vectors P and Q are perpendicular if and only if 0⋅ =P Q . This follows from the fact that the cosine function is zero at an angle of 90 degrees. Vectors whose dot product yields zero are called orthogonal. We define the zero vector,
0,0, ,0≡0 ! , to be orthogonal to every vector P, since ⋅0 P always equals zero.
FIGURE: Relation entre leproduit scalaire et l’angleséparant deux vecteurs,tiré de [2]
Transformations géométriques 11 / 104
Produit scalaire
Cette dernière relation entraîne que deux vecteurs P et Q sontperpendiculaires si et seulement si P ·Q = 0. On dira aussi que P etQ sont orthogonaux.
On peut aussi utiliser le signe d’un produit scalaire pour savoir sideux vecteurs pointent dans la même direction.
Transformations géométriques 12 / 104
Produit scalaire
Considérons un plan passant parl’origine et perpendiculaire à unvecteur P.
Tout vecteur Q partant de l’origineet étant du même côté du plan queP aura un produit scalaire avec Ppositif, tandis que les vecteurs del’autre côté du plan donneront unproduit scalaire négatif.
2.2 The Dot Product 17
P
Q
Q
Q
Q
0⋅ >P Q
0⋅ <P Q Figure 2.3. The sign of the dot product tells us whether two vectors lie on the same side or on opposite sides of a plane.
The second fact is that the sign of the dot product tells us how close two vec-tors are to pointing in the same direction. Referring to Figure 2.3, we can consid-er the plane passing through the origin and perpendicular to a vector P. Any vec-tor lying on the same side of the plane as P yields a positive dot product with P, and any vector lying on the opposite side of the plane from P yields a negative dot product with P. Several additional properties of the dot product are presented by the follow-ing theorem.
Theorem 2.5. Given any scalar a and any three vectors P, Q, and R, the fol-lowing properties hold. (a) ⋅ = ⋅P Q Q P (b) ( ) ( )a a⋅ = ⋅P Q P Q (c) ( )⋅ + = ⋅ + ⋅P Q R P Q P R (d) 2⋅ =P P P (e) ⋅ ≤P Q P Q
Proof. Parts (a), (b), and (c) are easily verified using the associative and commu-tative properties of the real numbers. Part (d) follows directly from the definition of P given in Equation (2.6) and the definition of the dot product given in Equa-tion (2.9). Part (e) is implied by Theorem 2.4 since cos 1Į ≤ . �
FIGURE: Signe du produitscalaire et direction desvecteurs, tiré de [2]
Transformations géométriques 13 / 104
Produit scalaire
Soit un scalaire a et soient trois vecteurs, P, Q et R. On a lespropriétés suivantes :
(a) P ·Q = Q · P(b) (aP) ·Q = a(P ·Q)
(c) P · (Q + R) = P ·Q + P · R(d) P · P = |P|2
(e) |P ·Q| ≤ |P| |Q|
Finalement, il ne faut jamais oublier que le produit scalaire entredeux vecteurs retourne toujours un scalaire.
Transformations géométriques 14 / 104
Produit vectoriel
Le produit vectoriel de deux vecteurs de dimension 3 permetd’obtenir un nouveau vecteur qui sera perpendiculaire aux deuxutilisés pour faire le produit.
Le produit vectoriel sera particulièrement utile en infographie pourévaluer des vecteurs normaux à des surfaces. Un vecteur normal estun vecteur perpendiculaire à une surface en un point donné.
Transformations géométriques 15 / 104
Produit vectoriel
Soient P et Q, deux vecteurs 3D. Le produit vectoriel de P et Q, notéP×Q, est donné par
P×Q = (PyQz − PzQy ,PzQx − PxQz ,PxQy − PyQx ).
Transformations géométriques 16 / 104
Produit vectoriel
Le produit vectoriel P×Q peut aussi être vu comme le déterminantde la matrice
i j kPx Py PzQx Qy Qz
,
où i = (1,0,0), j = (0,1,0) et k = (0,0,1).
Comme le vecteur donné par P×Q est perpendiculaire à P et à Q, ona nécessairement que
(P×Q) · P = 0 et (P×Q) ·Q = 0.
Transformations géométriques 17 / 104
Produit vectoriel
Tout comme le produit scalaire, le produit vectoriel peut aussi êtreinterprété de façon trigonométrique :
|P×Q| = |P| |Q| sinα,
où α est l’angle planaire entre les vecteurs P et Q.
Transformations géométriques 18 / 104
Produit vectoriel
On a vu que le produit vectorielentre deux vecteurs P et Q donneun troisième vecteurperpendiculaire à la fois à P et à Q.
Or, il existe deux directionspossibles pour un tel vecteur.
FIGURE: Directionspossibles pour le produitvectoriel, tiré de Wikipedia
Transformations géométriques 19 / 104
Produit vectoriel
Pour savoir dans quelle direction pointe le produit vectoriel de deuxvecteurs, on utilise un outil facile à trouver : une main droite.
FIGURE: Utilisation de la main droite pour trouver la direction du produitvectoriel, tiré de Wikipedia
Transformations géométriques 20 / 104
Produit vectoriel
Soient deux scalaires, a et b, et trois vecteurs 3D, P, Q et R. On a lespropriétés suivantes :
(a) Q× P = −(P×Q)
(b) (aP)×Q = a(P×Q)
(c) P× (Q + R) = P×Q + P× R
(d) P× P = 0 = (0,0,0)
(e) (P×Q) · R = (R× P) ·Q = (Q× R) · P
Transformations géométriques 21 / 104
Systèmes de coordonnées
1 Vecteurs et matrices
2 Systèmes de coordonnées
3 Transformations affines 2D
4 Transformations affines 3D
5 Gestion des matrices dans OpenGL
6 Transformation fenêtre clôture
7 Changement de repère
8 RéférencesTransformations géométriques 22 / 104
Coordonnées cartésiennes
En trois dimensions, un système de coordonnées cartésiennes estcaractérisé par trois axes perpendiculaires.
Un point ou un vecteurP = (x , y , z) peut être exprimécomme une combinaison linéairede trois vecteurs de base :
P = x i + y j + zk,
où i, j et k sont des vecteursunitaires parallèles aux trois axes.
513
Appendix C Coordinate Systems
C.1 Cartesian Coordinates
A Cartesian coordinate system is characterized by three mutually perpendicular axes, usually named x, y, and z. As shown in Figure C.1, a point P can be ex-pressed as
x y z= + +P i j k , (C.1)
where i, j, and k are unit vectors parallel to the three axes. The scalars x, y, and z are the Cartesian coordinates of the point P.
yx
z
P
j
i
k
Figure C.1. Cartesian coordinates.
FIGURE: Coordonnéescartésiennes, tiré de [2]
Transformations géométriques 23 / 104
Coordonnées polaires
a =
[x1y1
]=
[r cosφr sinφ
]
Transformations géométriques 24 / 104
Coordonnées sphériques
r
p
p =
x1y1z1
=
r sin θ cosφr sin θ sinφ
r cos θ
Transformations géométriques 25 / 104
Coordonnées homogènes
Les coordonnées homogènes ajoutent une coordonnéesupplémentaire aux points.
Point : ph = [px ,py ,pz ,w ]t , avec w 6= 0
Vecteur : vh = [vx , vy , vz ,0]t
On dira que deux points en coordonnées homogènes sont égaux si etseulement si l’un est un multiple de l’autre.
[2,3,6,1]t ≈ [4,6,12,2]t
Transformations géométriques 26 / 104
Coordonnées homogènes
Chaque point en coordonnées cartésiennes possède plusieursreprésentations en coordonnées homogènes.
Si la coordonnée w est non nulle, on peut effectuer la division pourretrouver les coordonnées cartésiennes d’un point.
[10,4,2,2]t ≈[
102,42,22,22
]t
≈ [5,2,1,1]t → [5,2,1]t
Transformations géométriques 27 / 104
Transformations affines 2D
1 Vecteurs et matrices
2 Systèmes de coordonnées
3 Transformations affines 2D
4 Transformations affines 3D
5 Gestion des matrices dans OpenGL
6 Transformation fenêtre clôture
7 Changement de repère
8 RéférencesTransformations géométriques 28 / 104
Transformations affines 2D
Toute composition de rotations, translations, changementd’échelle, cisaillement est appelée transformation affine.
Soient un point (x , y) et son image (x ′, y ′) suite à une transformation.Soient aussi a,b, c,d ,e, f ∈ R. La transformation sera dite affine si ellerespecte la condition suivante :
[x ′
y ′
]=
[a bc d
] [xy
]+
[ef
]
Transformations géométriques 29 / 104
Propriétés
Elles préservent le parallélisme des droites
Elles ne préservent ni les longueurs, ni les angles
!
"
!"#"$%&"'(
)*+$",-%. %//".-
0&12-+'"3-
'&%.!$%'"1.
Figure 2: Basic set of 2D planar transformations
where
R =
cos θ − sin θ
sin θ cos θ
(4)
is an orthonormal rotation matrix withRRT = I and |R| = 1.
Scaled rotation. Also known as the similarity transform, this transform can be expressed as
x′ = sRx + t where s is an arbitrary scale factor. It can also be written as
x′ =[
sR t]x̃ =
a −b tx
b a ty
x̃, (5)
where we no longer require that a2 + b2 = 1. The similarity transform preserves angles between
lines.
Affine. The affine transform is written as x′ = Ax̃, whereA is an arbitrary 2 × 3 matrix, i.e.,
x′ =
a00 a01 a02
a10 a11 a12
x̃. (6)
Parallel lines remain parallel under affine transformations.
Projective. This transform, also known as a perspective transform or homography, operates on
homogeneous coordinates x̃ and x̃′,
x̃′ ∼ H̃x̃, (7)
where ∼ denotes equality up to scale and H̃ is an arbitrary 3 × 3 matrix. Note that H̃ is itself
homogeneous, i.e., it is only defined up to a scale. The resulting homogeneous coordinate x̃′ must
be normalized in order to obtain an inhomogeneous result x′, i.e.,
x′ =h00x + h01y + h02
h20x + h21y + h22
and y′ =h10x + h11y + h12
h20x + h21y + h22
. (8)
Perspective transformations preserve straight lines.
4
Transformations géométriques 30 / 104
Translation
P (x, y)
x
y P ′(x + ∆x, y + ∆y)
T
∆x
∆y
Règle générale
P ′ =
[x ′
y ′
]=
[xy
]+
[∆x∆y
]= P + T
Transformations géométriques 31 / 104
Translation
x
y
x
y
2
3 T = (−2,−3)
Transformations géométriques 32 / 104
Rotation
r
a =
[xy
]=
[r cosαr sinα
]b =
[x ′
y ′
]=
[r cos(α + φ)r sin(α + φ)
]
La rotation s’effectue dans le sens anti-horaire.
Transformations géométriques 33 / 104
Rotation
r
b =
[r cosα cosφ− r sinα sinφr cosα sinφ+ r sinα cosφ
]
=
[x cosφ− y sinφx sinφ+ y cosφ
]
=
[cosφ − sinφsinφ cosφ
] [xy
]
Règle générale
P ′ =
[x ′
y ′
]=
[cos θ − sin θsin θ cos θ
] [xy
]= RP
Transformations géométriques 34 / 104
Changement d’échelle
x
y
P (x, y)
P ′(x∆x, y∆y)
Règle générale
P ′ =
[x ′
y ′
]=
[∆x 00 ∆y
] [xy
]= SP
Transformations géométriques 35 / 104
Réflexion
La réflexion n’est qu’un cas particulier du changement d’échelle.
Réflexion par rapport à l’axe des y :
x
y
P ′ =
[x ′
y ′
]=
[−1 00 1
] [xy
]= SP
Transformations géométriques 36 / 104
Réflexion
La réflexion n’est qu’un cas particulier du changement d’échelle.
Réflexion par rapport à l’axe des x :
x
y
P ′ =
[x ′
y ′
]=
[1 00 −1
] [xy
]= SP
Transformations géométriques 37 / 104
Cisaillement
Le cisaillement est une opération qui permet de déformer les objets.On les sépare souvent en deux types :
Selon l’axe des x
Cx =
[1 a0 1
]
Selon l’axe des y
Cy =
[1 0b 1
]
Transformations géométriques 38 / 104
Cisaillement
Figure originale Cisaillement en x Cisaillement en y
Transformations géométriques 39 / 104
Cisaillement
7 Transformation 61
Similarly, this transform is used for reflections about an arbitrary x -axis,y = ay:
x′ = x
y′ = −(y − ay) + ay = −y + 2ay (7.34)
or, in matrix form,
x′
y′
1
=
1 0 00 −1 2ay
0 0 1
·
xy1
(7.35)
7.3.4 2D Shearing
A shape is sheared by leaning it over at an angle β. Figure 7.6 illustratesthe geometry, and we see that the y-coordinate remains unchanged but thex -coordinate is a function of y and tan(β).
x′ = x + y tan(β)
y′ = y (7.36)
or, in matrix form,
x′
y′
1
=
1 tan(β) 00 1 00 0 1
·
xy1
(7.37)
Sheared
y tan b
X
y
Y
Original
b
Fig. 7.6. The original square shape is sheared to the right by an angle β, and thehorizontal shift is proportional to ytan(β).
Matrice de cisaillement (selon l’axe des x)[x ′
y ′
]=
[1 tan (β)0 1
]·[xy
]
Transformations géométriques 40 / 104
Cisaillement
Forme générale
P ′ =
[x ′
y ′
]=
[1 a0 1
] [xy
]= CxP
ou
P ′ =
[x ′
y ′
]=
[1 0b 1
] [xy
]= CyP
Transformations géométriques 41 / 104
Résumé des formes générales
Translation
P ′ =
[x ′
y ′
]=
[xy
]+
[∆x∆y
]= P + T
Rotation
P ′ =
[x ′
y ′
]=
[cos θ − sin θsin θ cos θ
] [xy
]= RP
Changement d’échelle
P ′ =
[x ′
y ′
]=
[∆x 00 ∆y
] [xy
]= SP
Cisaillement
P ′ =
[x ′
y ′
]=
[1 a0 1
] [xy
]= CxP
Transformations géométriques 42 / 104
Translation
Contrairement à la rotation, au changement d’échelle et aucisaillement, la translation en coordonnées cartésiennes ne peut pasêtre effectuée à l’aide d’une multiplication matricielle.
La solution sera de remplacer les coordonnées cartésiennes par descoordonnées homogènes. On obtiendra alors la forme
P ′ =
x ′
y ′
1
=
1 0 ∆x0 1 ∆y0 0 1
xy1
= TP
Transformations géométriques 43 / 104
Résumé des formes générales
Translation
P ′ =
x ′
y ′
1
=
1 0 ∆x0 1 ∆y0 0 1
xy1
= TP
Rotation
P ′ =
x ′
y ′
1
=
cosφ − sinφ 0sinφ cosφ 0
0 0 1
xy1
= RP
Transformations géométriques 44 / 104
Résumé des formes générales
Changement d’échelle
P ′ =
x ′
y ′
1
=
∆x 0 00 ∆y 00 0 1
xy1
= SP
Cisaillement
P ′ =
x ′
y ′
1
=
1 a 00 1 00 0 1
xy1
= CxP
Transformations géométriques 45 / 104
Résumé des formes générales
x′
y′
1
=
a b cd e f0 0 1
xy1
Rotation, changement d’échelle, cisaillement.
Translation
Transformations géométriques 46 / 104
Combinaison de transformations
Il est possible de combiner des transformations afin de transformerune forme A en une forme B.
x
y
P
P ′
x
y
3
2 5
445◦
Cette opération s’effectuera en plusieurs étapes.
Transformations géométriques 47 / 104
Combinaison de transformations
Première étape : translation de (−2,−3) pour ramener le point P àl’origine.
x
y
P3
2x
y
Transformations géométriques 48 / 104
Combinaison de transformations
Deuxième étape : changement d’échelle de facteur 12 .
x
y
x
y
Transformations géométriques 49 / 104
Combinaison de transformations
Troisième étape : rotation de 45◦.
x
y
x
y
Transformations géométriques 50 / 104
Combinaison de transformations
Quatrième étape : translation de (5,4).
x
y
P ′
x
y
5
4
Transformations géométriques 51 / 104
Combinaison de transformations
Il est possible de représenter toutes les combinaisons detransformations par une multiplication d’une matrice et d’un point.
x
y
P
P ′
x
y
3
2 5
4
P ′ = T (5,4) R (45◦) S(
12,12
)T (−2,−3) P = MP
Transformations géométriques 52 / 104
Combinaison de transformations
Comme l’illustre l’exemple précédent, la rotation et le changementd’échelle (ainsi que le cisaillement) sont des opérations qui s’opèrentpar rapport à l’origine.
Pour effectuer une de ces opérations par rapport à un point arbitraire,on doit utiliser deux translations : la première pour ramener le point àl’origine et la seconde pour replacer l’objet à sa position originale.
T (a,b) R (θ) T (−a,−b)
Transformations géométriques 53 / 104
Inverse d’une transformation affine
Si une transformation affine M permet de transformer une forme A enune forme A′, c’est-à-dire
A′ = MA,
alors son inverse (s’il existe) permet de transformer la forme A′ en laforme A :
A = M−1A′.
Transformations géométriques 54 / 104
Inverse d’une transformation affine
Translation
T−1 =
1 0 −∆x0 1 −∆y0 0 1
Rotation
R−1 =
cosφ sinφ 0− sinφ cosφ 0
0 0 1
Changement d’échelle
S−1 =
1∆x 0 00 1
∆y 00 0 1
Cisaillement
C−1x =
1 −a 00 1 00 0 1
Transformations géométriques 55 / 104
Concaténation de matrices
Si un seul point est transformé, il est plus efficace (en nombred’opérations) d’appliquer les transformations une à la suite de l’autre.
Si plusieurs points sont transformés, il est par contre préférable deprémultiplier les matrices de transformation en une seule. C’est cequ’OpenGL fait toujours.
Transformations géométriques 56 / 104
Ordre des transformations
L’ordre des transformations est très important : un changementd’échelle suivi d’une translation est différent d’une translation suivied’un changement d’échelle.
1 0 ∆x0 1 ∆y0 0 1
sx 0 00 sy 00 0 1
=
sx 0 ∆x0 sy ∆y0 0 1
sx 0 00 sy 00 0 1
1 0 ∆x0 1 ∆y0 0 1
=
sx 0 sx ∆x0 sy sy ∆y0 0 1
Les transformations sont toutefois commutatives entre elles.
Transformations géométriques 57 / 104
Transformations affines 3D
1 Vecteurs et matrices
2 Systèmes de coordonnées
3 Transformations affines 2D
4 Transformations affines 3D
5 Gestion des matrices dans OpenGL
6 Transformation fenêtre clôture
7 Changement de repère
8 RéférencesTransformations géométriques 58 / 104
Transformations affines 3D
x′
y′
z′
1
=
a11 a12 a13 a14
a21 a22 a23 a24
a31 a32 a33 a34
0 0 0 1
xyz1
Rotation, changement d’échelle, cisaillement.
Translation
Transformations géométriques 59 / 104
Translation
Une translation 3D déplace un ensemble de points d’une certainedistance, dans une certaine direction.
P ′ =
x ′
y ′
z ′
1
=
xyz1
+
∆x∆y∆z0
= P + T
Transformations géométriques 60 / 104
Translation
Comme dans le cas 2D, l’utilisation des coordonnées homogènespermet de représenter la translation sous la forme d’une multiplicationmatricielle.
Forme générale
P ′ =
x ′
y ′
z ′
1
=
1 0 0 ∆x0 1 0 ∆y0 0 1 ∆z0 0 0 1
xyz1
= TP
Transformations géométriques 61 / 104
Translation
x
y
z
T
P
P ′
Transformations géométriques 62 / 104
Rotation
En 3D, une rotation fait tourner un ensemble de points (ou d’objets)d’un angle α autour d’un axe de rotation. Contrairement à la rotationdans le plan, l’axe autour duquel s’effectue la rotation 3D peut être unedroite quelconque dans l’espace. Il sera alors nécessaires dedécomposer la rotation en trois composantes : des rotations en x , y etz, ce qui donnera lieu à trois matrices de rotation différentes.
Comme dans le cas 2D, la rotation s’effectue toujours par rapport àl’origine.
Transformations géométriques 63 / 104
Rotation
Rx (θ) =
1 0 0 00 cos θ − sin θ 00 sin θ cos θ 00 0 0 1
Ry (θ) =
cos θ 0 sin θ 00 1 0 0
− sin θ 0 cos θ 00 0 0 1
Rz (θ) =
cos θ − sin θ 0 0sin θ cos θ 0 0
0 0 1 00 0 0 1
Transformations géométriques 64 / 104
Rotation
Forme générale (rotation autour de l’axe x)
P ′ =
x ′
y ′
z ′
1
=
1 0 0 00 cos θ − sin θ 00 sin θ cos θ 00 0 0 1
xyz1
= RxP
Transformations géométriques 65 / 104
Changement d’échelle
Un changement d’échelle 3D modifie la taille d’un objet par rapport àl’origine.
Forme générale
P ′ =
x ′
y ′
z ′
1
=
Sx 0 0 00 Sy 0 00 0 Sz 00 0 0 1
xyz1
= SP
Transformations géométriques 66 / 104
Cisaillement
Comme c’était le cas en 2D, on définit une matrice de cisaillementpour chaque axe.
Cx =
1 0 0 0cy 1 0 0cz 0 1 00 0 0 1
Cy =
1 cx 0 00 1 0 00 cz 1 00 0 0 1
Cz =
1 0 cx 00 1 cy 00 0 1 00 0 0 1
Transformations géométriques 67 / 104
Cisaillement
Forme générale
P ′ =
x ′
y ′
z ′
1′
=
1 0 cx 00 1 cy 00 0 1 00 0 0 1
xyz1
= CzP
Transformations géométriques 68 / 104
Combinaison de transformation
Tout comme pour les transformations 2D, une suite de transformationsaffines 3D peuvent être combinées en une seule matrice afin d’allégerles calculs.
x
y
z
P0
P ′0
P ′1
P1
Comment transformer le segment de droite depuis sa position initialejusqu’à sa position finale ?
Transformations géométriques 69 / 104
Combinaison de transformation
Première étape : translation de −P0 pour ramener le segment àl’origine.
x
y
z
P0
P1
x
y
z
Transformations géométriques 70 / 104
Combinaison de transformation
Deuxième étape : rotation d’angle θ autour de l’axe y .
x
y
z
x
y
z
Transformations géométriques 71 / 104
Combinaison de transformation
Troisième étape : rotation d’angle φ autour de l’axe z.
x
y
z
x
y
z
Transformations géométriques 72 / 104
Combinaison de transformation
Quatrième étape : translation de P ′0.
x
y
z
x
y
z
P ′0
P ′1
P ′ = T (P ′0)Rz(φ)Ry (θ)T (−P0)P
Transformations géométriques 73 / 104
Gestion des matrices dans OpenGL
1 Vecteurs et matrices
2 Systèmes de coordonnées
3 Transformations affines 2D
4 Transformations affines 3D
5 Gestion des matrices dans OpenGL
6 Transformation fenêtre clôture
7 Changement de repère
8 RéférencesTransformations géométriques 74 / 104
Transformations affines
Translation : glTranslate*(.)
Rotation : glRotate*(.)
Changement d’échelle : glScale*(.)
Cisaillement : ?
Transformations géométriques 75 / 104
Matrice courante
OpenGL utilise deux matrices pour gérer l’affichage de la scène :
Matrice de vision GL_MODELVIEW : elle positionne et oriente lesobjets de la scène (et la caméra) à l’aide de transformationsaffines.
Matrice de projection GL_PROJECTION : elle projette les objets dela scène sur le plan image. Elle gère deux types de projection :orthographique et perspective.
Transformations géométriques 76 / 104
Matrice courante
On choisit la matrice GL_MODELVIEW avant de procéder aupositionnement de la caméra et des objets.
/* Selectionner la pile de transformations attachee aux objects*/glMatrixMode(GL_MODELVIEW);
glLoadIdentity();gluLookAt(x, y, z, /* Position de la camera */
0.0, 0.0, 0.0, /* Le point que la camera regarde*/0.0, 1.0, 0.0); /* le ’up-vector’ */
/* ... */
/*********** afficher les objets de la scene ***********//* La sphere */glPushMatrix();glTranslatef(9,0,0);glColor3f(0,1,0);glutSolidSphere(4,16,16);glPopMatrix();
Transformations géométriques 77 / 104
Fonctions utiles
glLoadIdentity() : copie la matrice identité dans la matricecourante
glLoadMatrix*(.) : copie un tableau 1D à 16 entrées dans lamatrice courante
glMultMatrix*(.) : multiplie la matrice courante par untableau 1D à 16 entrées
glGetFloatv(.) : copie le contenue de la matrice d’une matricedans un tableau 1D à 16 entrées
glPushMatrix() : sauvegarde la matrice courante dans la pile
glPopMatrix() : ramène la dernière matrice sauvegardée dansla matrice courante
Transformations géométriques 78 / 104
Ordre des transformations
Toutes les transformations géométriques sont représentées par desmatrices 4× 4. Tout appel à glMultMatrix*(.) ou à une fonctionde transformation multiplie (à droite) une nouvelle matrice M4×4 à lamatrice GL_MODELVIEW courante C4×4.
Une fois l’ensemble des transformations définies, les points définissont multipliés par la matrice GL_MODELVIEW courante. Il en résulteque la dernière transformation appelée est en réalité la première àêtre appliquée aux sommets.
Transformations géométriques 79 / 104
Ordre des transformations
Soit v un sommet 3D. Considérons l’exemple suivant :
glMatrixMode(GL_MODELVIEW);glLoadIdentity();glMultMatrixf(N); /* apply transformation N */glMultMatrixf(M); /* apply transformation M */glMultMatrixf(L); /* apply transformation L */glBegin(GL_POINTS);glVertex3f(v); /* draw transformed vertex v */glEnd();
La matrice GL_MODELVIEW contient successivement I, N, NM, NML, où I estla matrice identité. Le sommet affiché se trouvera ainsi à la position NMLv .
Transformations géométriques 80 / 104
Transformation fenêtre clôture
1 Vecteurs et matrices
2 Systèmes de coordonnées
3 Transformations affines 2D
4 Transformations affines 3D
5 Gestion des matrices dans OpenGL
6 Transformation fenêtre clôture
7 Changement de repère
8 RéférencesTransformations géométriques 81 / 104
Fenêtre et clôture
Fenêtre
Région dans l’espace 3D àtravers laquelle on voit lascène.
Plan de projection Fenêtre
Clôture
Partie de l’écran où la fenêtreest affichée.
IMN428 hiv2008 58
Transformation fenêtre/clôture
Fenêtre
Région dans l'espace 3D à travers laquelle on voit la scène
plan de vue
scène 3D
fenêtre
Clôture
Partie de l’écran où la
fenêtre est affichée
Système d’affichage
clôture
glViewport(x,y,w,h)
ClôtureSystème d'affichage
Transformations géométriques 82 / 104
Fenêtre et clôture
À la fenêtre, on associe la transformation de projection, et à la clôture,on associe la transformation viewport. Ce sont ces deuxtransformations qui déterminent comment une scène est affichée àl’écran de l’ordinateur.
La fonction glViewport(.) sert à spécifier la région (position ettaille) que l’image occupera à l’écran.
Transformations géométriques 83 / 104
Fenêtre et clôture
La fenêtre de vision et la clôture sont deux rectangles différentscorrespondants à deux espaces différents : le monde et l’affichage. Sielles n’ont pas le même ratio, l’image est déformée à l’écran.
x
y
Coordonnées universelles Coordonnées d'affichageu
v
Transformations géométriques 84 / 104
Fenêtre et clôture
Étant données une fenêtre et une clôture, la matrice qui projette l’unesur l’autre est composée de
Translation de la fenêtre à l’origine du repère universel.
Mise à l’échelle de la fenêtre de vue pour l’adapter à la clôture.
Translation pour positionner la clôture.
x
y
(xmin, ymin)
(xmax, ymax)
Fenêtre en coordonnéesuniverselles
x
y
Fenêtre translatée àl'origine
u
v
Clôture translatée àl'origine
(umax, vmax)
(umin, vmin)
u
v
Clôture en coordonnéesuniverselles
Transformations géométriques 85 / 104
Fenêtre et clôture
Ainsi, la transformation d’un point p de la fenêtre vers un point p′ de laclôture donne
P ′ = Mwv [x , y ,1]t
=
[(x − xmin)
umax − umin
xmax − xmin+ umin, (y − ymin)
vmax − vmin
ymax − ymin+ vmin,1
]t
où Mwv est la matrice qui permet de passer des coordonnées de lafenêtre à celles de la clôture.
Transformations géométriques 86 / 104
Fenêtre et clôture
On détermine Mwv à l’aide des matrices définies précédemment
Mwv = T (umin, vmin) S(
umax − umin
xmax − xmin,vmax − vmin
ymax − ymin
)T (−xmin,−ymin)
=
1 0 umin0 1 vmin0 0 1
umax−uminxmax−xmin
0 00 vmax−vmin
ymax−ymin0
0 0 1
1 0 −xmin0 1 −ymin0 0 1
=
umax−uminxmax−xmin
0 −xmin · umax−uminxmax−xmin
+ umin
0 vmax−vminymax−ymin
−ymin · vmax−vminymax−ymin
+ vmin
0 0 1
Transformations géométriques 87 / 104
Changement de repère
1 Vecteurs et matrices
2 Systèmes de coordonnées
3 Transformations affines 2D
4 Transformations affines 3D
5 Gestion des matrices dans OpenGL
6 Transformation fenêtre clôture
7 Changement de repère
8 RéférencesTransformations géométriques 88 / 104
Généralités
Jusqu’à présent, nous avons défini la transformation géométriquecomme une opération permettant de déplacer ou de déformer un objetdans un même repère. Nous pouvons toutefois utiliser ces mêmestransformations pour convertir les coordonnées d’un point dans unrepère j vers un repère i . Cela se fait à l’aide d’une matrice detransformation.
Cela est particulièrement utile pour les scènes contenant un repèreglobal et contenant plusieurs objets, chacun ayant son repère local.
Transformations géométriques 89 / 104
Changement de repère 2D
Considérons l’exemple suivant : on connaît les coordonnées (x , y)d’un point dans le repère défini par les axes X et Y et on doit évaluersa position selon le nouveau repère défini par les axes X ′ et Y ′.
84 7 Transforms
Y
X
ty
tx
Y ¢
X ¢
y¢
x¢
x
yP(x, y) º P ¢(x ¢, y ¢)
Fig. 7.15 The X ′Y ′ axial system is translated (tx, ty).
If the X ′Y ′-axes are rotated β relative to the XY -axes, as shown in Fig. 7.16, apoint P(x,y) relative to the XY -axes becomes P′(x′,y′) relative to the rotated axes isgiven by
X
Y
Y¢
y¢x¢
X¢
bx
yP(x, y) º P¢(x¢, y¢)
Fig. 7.16 The X ′Y ′ axial system is rotated β .
x′
y′
1
=
cos(−β ) −sin(−β ) 0
sin(−β ) cos(−β ) 0
0 0 1
x
y
1
which simplifies to
x′
y′
1
=
cosβ sinβ 0
−sinβ cosβ 0
0 0 1
x
y
1
.
Transformations géométriques 90 / 104
Changement de repère 2D
Pour y arriver, on doit établir la relation qui existe entre les deuxsystèmes de coordonnées.
Dans le cas présent, le repère X ′Y ′ est une translation du repèreoriginal. Ainsi, les coordonnées du point dans le repère X ′Y ′ seront(x − tx , y − ty ). On peut ainsi définir la matrice de passage d’unrepère vers l’autre :
x ′
y ′
1
=
1 0 −tx0 1 −ty0 0 1
xy1
Transformations géométriques 91 / 104
Changement de repère 2D
Si le système X ′Y ′ est obtenu par une rotation d’angle β du systèmeoriginal, la matrice de passage devient une matrice de rotation :
x ′
y ′
1
=
cosβ sinβ 0− sinβ cosβ 0
0 0 1
xy1
84 7 Transforms
Y
X
ty
tx
Y ¢
X ¢
y¢
x¢
x
yP(x, y) º P ¢(x ¢, y ¢)
Fig. 7.15 The X ′Y ′ axial system is translated (tx, ty).
If the X ′Y ′-axes are rotated β relative to the XY -axes, as shown in Fig. 7.16, apoint P(x,y) relative to the XY -axes becomes P′(x′,y′) relative to the rotated axes isgiven by
X
Y
Y¢
y¢x¢
X¢
bx
yP(x, y) º P¢(x¢, y¢)
Fig. 7.16 The X ′Y ′ axial system is rotated β .
x′
y′
1
=
cos(−β ) −sin(−β ) 0
sin(−β ) cos(−β ) 0
0 0 1
x
y
1
which simplifies to
x′
y′
1
=
cosβ sinβ 0
−sinβ cosβ 0
0 0 1
x
y
1
.
Transformations géométriques 92 / 104
Changement de repère 2D
Lorsqu’un système de coordonnées est obtenu par une rotation etune translation du système de référence, un point (x , y) dans lesystème original devient (x ′, y ′) dans le système transformé et onl’évalue ainsi :
x ′
y ′
1
=
cosβ sinβ 0− sinβ cosβ 0
0 0 1
1 0 −tx0 1 −ty0 0 1
xy1
Notons que, pour des raisons évidentes, les notions de changementd’échelle et de cisaillement de repères ne présentent aucun intérêt.
Transformations géométriques 93 / 104
Cosinus directeurs
On définit les cosinus directeurs d’un vecteur comme étant lesangles entre lui-même et les axes de son repère. Pour un vecteurunitaire, les cosinus directeurs correspondent à ses composantes.
Considérons l’exemple suivant où les deux vecteurs X ′ et Y ′ sont desvecteurs unitaires :
7.6 Change of Axes 85
When a coordinate system is rotated and translated relative to the referencesystem, a point P(x,y) becomes P′(x′,y′) relative to the new axes given by
x′
y′
1
=
cosβ sinβ 0
−sinβ cosβ 0
0 0 1
1 0 −tx0 1 −ty0 0 1
x
y
1
which simplifies to
x′
y′
1
=
cosβ sinβ −tx cosβ − ty sinβ−sinβ cosβ tx sinβ − ty cosβ
0 0 1
x
y
1
.
X
Y
Y ¢
X ¢
b
b90° -b
Fig. 7.17 If the X ′- and Y ′-axes are assumed to be unit vectors, their direction cosines form theelements of the rotation matrix.
7.6.2 Direction Cosines
Direction cosines are the cosines of the angles between a vector and the Cartesianaxes, and for unit vectors they are the vector’s components. Figure 7.17 shows twounit vectors X ′ and Y ′, and by inspection the direction cosines for X ′ are cosβ andcos(90◦ − β ), which can be rewritten as cosβ and sinβ , and the direction cosinesfor Y ′ are cos(90◦ +β ) and cosβ , which can be rewritten as −sinβ and cosβ . Butthese direction cosines cosβ , sinβ , −sinβ and cosβ are the four elements of therotation matrix used above [
cosβ sinβ−sinβ cosβ
].
Transformations géométriques 94 / 104
Cosinus directeurs
Les cosinus directeurs de X ′ sont
cosβ par rapport à X ; etcos(90− β) = sinβ par rapport à Y .
Pareillement, les cosinus directeurs de Y ′ sont
cos(90 + β) = − sinβ par rapport à X ; etcosβ par rapport à Y .
Transformations géométriques 95 / 104
Cosinus directeurs
On remarque que les cosinus directeurs sont les quatre éléments dela matrice de rotation utilisée précédemment :
cosβ sinβ 0− sinβ cosβ 0
0 0 1
Transformations géométriques 96 / 104
Cosinus directeurs
Transformations géométriques 97 / 104
Cosinus directeurs
Considérons le cas d’un système d’axe ayant subi une rotation de 45◦
par rapport au repère original. À l’aide des cosinus directeurs, ontrouve la transformation entre les deux repères :
x ′
y ′
1
=
cos 45 sin 45 0− sin 45 cos 45 0
0 0 1
xy1
Transformations géométriques 98 / 104
Cosinus directeurs
La transformation de quatre points situés aux quatres coins d’un carréunitaire illustrent que la méthode fonctionne réellement !
(0,0) −→ (0,0)
(1,0) −→ (0.707,−0.707)
(1,1) −→ (1.1414,0)
(0,1) −→ (0.707,0.707)
86 7 Transforms
The top row contains the direction cosines for the X ′-axis and the bottom rowcontains the direction cosines for the Y ′-axis. This relationship also holds in 3D.
Before exploring changes of axes in 3D let’s evaluate a simple example in 2Dwhere a set of axes is rotated 45◦ as shown in Fig. 7.18. The appropriate transform is
x′
y′
1
=
cos45◦ sin45◦ 0
−sin45◦ cos45◦ 0
0 0 1
x
y
1
≈
0.707 0.707 0
−0.707 0.707 0
0 0 1
x
y
1
.
The four vertices on a unit square become
(0,0) → (0,0)
(1,0) → (0.707,−0.707)
(1,1) → (1.1414,0)
(0,1) → (0.707,0.707)
which by inspection of Fig. 7.18 are correct.
X
Y
Y ¢
X ¢
(1,1) º (1.414,0)¢
(1,0) º (0.707,–0.707)¢
(0,1) º (0.707,0.707)¢
Fig. 7.18 The vertices of a unit square relative to the two axial systems.
7.6.3 3D Change of Axes
The ability to reference a collection of coordinates is fundamental in computergraphics, especially in 3D. And rather than investigate them within this section,let’s delay their analysis for the next section, where we see how the technique isused for relating an object’s coordinates relative to an arbitrary virtual camera.
Transformations géométriques 99 / 104
Changement de repère 3D
Les cosinus directeurs permettent aussi de transformer un pointP(x , y , z) dans un repère A en point P ′(x ′, y ′, z ′) dans un repère B.
Matrice de changement de repère
x ′
y ′
z ′
1
=
r11 r12 r13 0r21 r22 r23 0r31 r32 r33 00 0 0 1
·
1 0 0 −tx0 1 0 −ty0 0 1 −tz0 0 0 1
·
xyz1
r11, r12 et r13 sont les cosinus directeurs de l’axe des x du repère B.
r21, r22 et r23 sont les cosinus directeurs de l’axe des y du repère B.
r31, r32 et r33 sont les cosinus directeurs de l’axe des z du repère B.
Transformations géométriques 100 / 104
Changement de repère 3D7.7 Positioning the Virtual Camera 89
X
Y
Z
X ¢
Y ¢
Z¢
Fig. 7.21 The X ′Y ′Z′ axial system after a roll of 90◦.
Substituting (1,1,0) for (x,y,z) produces (1,−1,0) for (x′,y′,z′) in the newframe of reference, which by inspection, is correct.
If the virtual camera is offset by (tx, ty, tz) the transform relating points in worldspace to camera space can be expressed as a compound operation consisting of atranslation back to the origin, followed by a change of axial systems. This can beexpressed as
x′
y′
z′
1
=
r11 r12 r13 0
r21 r22 r23 0
r31 r32 r33 0
0 0 0 1
1 0 0 −tx0 1 0 −ty0 0 1 −tz0 0 0 1
x
y
z
1
.
As an example, consider the scenario shown in Fig. 7.22. The values of (tx, ty, tz) are(10,1,1), and the direction cosines are as shown in the following matrix operation:
x′
y′
z′
1
=
−1 0 0 0
0 1 0 0
0 0 −1 0
0 0 0 1
1 0 0 −10
0 1 0 −1
0 0 1 −1
0 0 0 1
x
y
z
1
which simplifies to
x′
y′
z′
1
=
−1 0 0 10
0 1 0 −1
0 0 −1 1
0 0 0 1
x
y
z
1
.
Substituting (0,0,0) for (x,y,z) in the above transform produces (10,−1,1) for(x′,y′,z′), which can be confirmed from Fig. 7.22. Similarly, substituting (0,1,1)for (x,y,z) produces (10,0,0) for (x′,y′,z′), which is also correct.
À titre d’exemple, la matrice de changement de repère associée à lafigure précédente est donnée par
0 1 0 0−1 0 0 00 0 1 00 0 0 1
Transformations géométriques 101 / 104
Combinaison de changements de repère
Si une transformation Mj←i permet le passage du repère i au repère jet qu’une autre transformation Mk←j permet le passage du repère j aurepère k , alors
Mk←i = Mk←jMj←i .
Transformations géométriques 102 / 104
Références
1 Vecteurs et matrices
2 Systèmes de coordonnées
3 Transformations affines 2D
4 Transformations affines 3D
5 Gestion des matrices dans OpenGL
6 Transformation fenêtre clôture
7 Changement de repère
8 RéférencesTransformations géométriques 103 / 104
Références
J. D. Foley, A. van Dam, S. K. Feiner, and J. F. Hughes.Computer Graphics : Principles and Practice in C.Addison-Wesley, 1995.
E. Lengyel.Mathematics for 3D Game Programming and Computer Graphics.Course Technology PTR, 3rd edition, 2012.
J. Vince.Mathematics for Computer Graphics.Springer, 2010.
Transformations géométriques 104 / 104