Transformations g©om©triques

104
IMN428 Chapitre 2 - Transformations géométriques Olivier Godin Université de Sherbrooke 22 janvier 2014 Transformations géométriques 1 / 104

Transcript of Transformations g©om©triques

Page 1: Transformations g©om©triques

IMN428Chapitre 2 - Transformations géométriques

Olivier Godin

Université de Sherbrooke

22 janvier 2014

Transformations géométriques 1 / 104

Page 2: Transformations g©om©triques

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

Page 3: Transformations g©om©triques

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

Page 4: Transformations g©om©triques

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

Page 5: Transformations g©om©triques

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

Page 6: Transformations g©om©triques

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

Page 7: Transformations g©om©triques

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

Page 8: Transformations g©om©triques

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

Page 9: Transformations g©om©triques

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

Page 10: Transformations g©om©triques

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

Page 11: Transformations g©om©triques

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

Page 12: Transformations g©om©triques

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

Page 13: Transformations g©om©triques

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

QQ

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

Page 14: Transformations g©om©triques

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

Page 15: Transformations g©om©triques

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

Page 16: Transformations g©om©triques

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

Page 17: Transformations g©om©triques

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

Page 18: Transformations g©om©triques

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

Page 19: Transformations g©om©triques

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

Page 20: Transformations g©om©triques

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

Page 21: Transformations g©om©triques

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

Page 22: Transformations g©om©triques

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

Page 23: Transformations g©om©triques

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

Page 24: Transformations g©om©triques

Coordonnées polaires

a =

[x1y1

]=

[r cosφr sinφ

]

Transformations géométriques 24 / 104

Page 25: Transformations g©om©triques

Coordonnées sphériques

r

p

p =

x1y1z1

=

r sin θ cosφr sin θ sinφ

r cos θ

Transformations géométriques 25 / 104

Page 26: Transformations g©om©triques

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

Page 27: Transformations g©om©triques

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

Page 28: Transformations g©om©triques

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

Page 29: Transformations g©om©triques

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

Page 30: Transformations g©om©triques

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

Page 31: Transformations g©om©triques

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

Page 32: Transformations g©om©triques

Translation

x

y

x

y

2

3 T = (−2,−3)

Transformations géométriques 32 / 104

Page 33: Transformations g©om©triques

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

Page 34: Transformations g©om©triques

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

Page 35: Transformations g©om©triques

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

Page 36: Transformations g©om©triques

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

Page 37: Transformations g©om©triques

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

Page 38: Transformations g©om©triques

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

Page 39: Transformations g©om©triques

Cisaillement

Figure originale Cisaillement en x Cisaillement en y

Transformations géométriques 39 / 104

Page 40: Transformations g©om©triques

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

Page 41: Transformations g©om©triques

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

Page 42: Transformations g©om©triques

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

Page 43: Transformations g©om©triques

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

Page 44: Transformations g©om©triques

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

Page 45: Transformations g©om©triques

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

Page 46: Transformations g©om©triques

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

Page 47: Transformations g©om©triques

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

Page 48: Transformations g©om©triques

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

Page 49: Transformations g©om©triques

Combinaison de transformations

Deuxième étape : changement d’échelle de facteur 12 .

x

y

x

y

Transformations géométriques 49 / 104

Page 50: Transformations g©om©triques

Combinaison de transformations

Troisième étape : rotation de 45◦.

x

y

x

y

Transformations géométriques 50 / 104

Page 51: Transformations g©om©triques

Combinaison de transformations

Quatrième étape : translation de (5,4).

x

y

P ′

x

y

5

4

Transformations géométriques 51 / 104

Page 52: Transformations g©om©triques

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

Page 53: Transformations g©om©triques

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

Page 54: Transformations g©om©triques

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

Page 55: Transformations g©om©triques

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

Page 56: Transformations g©om©triques

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

Page 57: Transformations g©om©triques

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

Page 58: Transformations g©om©triques

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

Page 59: Transformations g©om©triques

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

Page 60: Transformations g©om©triques

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

Page 61: Transformations g©om©triques

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

Page 62: Transformations g©om©triques

Translation

x

y

z

T

P

P ′

Transformations géométriques 62 / 104

Page 63: Transformations g©om©triques

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

Page 64: Transformations g©om©triques

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

Page 65: Transformations g©om©triques

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

Page 66: Transformations g©om©triques

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

Page 67: Transformations g©om©triques

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

Page 68: Transformations g©om©triques

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

Page 69: Transformations g©om©triques

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

Page 70: Transformations g©om©triques

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

Page 71: Transformations g©om©triques

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

Page 72: Transformations g©om©triques

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

Page 73: Transformations g©om©triques

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

Page 74: Transformations g©om©triques

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

Page 75: Transformations g©om©triques

Transformations affines

Translation : glTranslate*(.)

Rotation : glRotate*(.)

Changement d’échelle : glScale*(.)

Cisaillement : ?

Transformations géométriques 75 / 104

Page 76: Transformations g©om©triques

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

Page 77: Transformations g©om©triques

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

Page 78: Transformations g©om©triques

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

Page 79: Transformations g©om©triques

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

Page 80: Transformations g©om©triques

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

Page 81: Transformations g©om©triques

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

Page 82: Transformations g©om©triques

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

Page 83: Transformations g©om©triques

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

Page 84: Transformations g©om©triques

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

Page 85: Transformations g©om©triques

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

Page 86: Transformations g©om©triques

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

Page 87: Transformations g©om©triques

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

Page 88: Transformations g©om©triques

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

Page 89: Transformations g©om©triques

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

Page 90: Transformations g©om©triques

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 ¢

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¢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

Page 91: Transformations g©om©triques

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

Page 92: Transformations g©om©triques

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 ¢

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¢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

Page 93: Transformations g©om©triques

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

Page 94: Transformations g©om©triques

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

Page 95: Transformations g©om©triques

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

Page 96: Transformations g©om©triques

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

Page 97: Transformations g©om©triques

Cosinus directeurs

Transformations géométriques 97 / 104

Page 98: Transformations g©om©triques

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

Page 99: Transformations g©om©triques

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

Page 100: Transformations g©om©triques

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

Page 101: Transformations g©om©triques

Changement de repère 3D7.7 Positioning the Virtual Camera 89

X

Y

Z

X ¢

Y ¢

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

Page 102: Transformations g©om©triques

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

Page 103: Transformations g©om©triques

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

Page 104: Transformations g©om©triques

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