Upload
gisbert-fort
View
107
Download
1
Embed Size (px)
Citation preview
SUJETS SPÉCIAUX EN INFORMATIQUE I
PIF-6003
Contenu du cours• Transformations géométriques des objets
– Transformations 2D – Transformations entre systèmes de coordonnées– Transformations 3D– Utilisation des transformations dans un programme– Introduction au processus de visualisation avec OpenGL
Contenu du cours • Transformations géométriques des objets
Transformations géométriques 2D de base
• Translation– La translation d’un point 2D s’effectue par
l’addition des distances de décalage tx et ty aux coordonnées d’origine du point (x,y) permettant son déplacement à la position (x’,y’)
y
x
tyy
txx
'
'
Transformations géométriques 2D de base
• Translation– Sous forme matricielle
'
''
'
''
y
x
ty
tx
t
t
y
xTPP
t
tT
y
xP
y
xP
y
x
y
x
y
x
Transformations géométriques 2D de base
• Rotation– Une rotation est appliquée sur un objet en le
déplaçant selon une trajectoire circulaire– Nous devons spécifier un angle de rotation () et la
position (xr, yr) du pivot
– SI (xr=0, yr=0)
cossin'
sincos'
yxy
yxx
Transformations géométriques 2D de base
• Rotation
Transformations géométriques 2D de base
• Rotation– Sous forme matricielle
PRP 'avec
'
'
cossin
sincos'
cossin
sincos
y
x
y
xPRP
R
Transformations géométriques 2D de base
• Rotation– Par rapport à un pivot
r
r
yy
xxP
Rotation suivi d’une translation
r
r
y
x
y
x
t
tT
TPRP'
TRANSLATION
Transformations géométriques 2D de base
• Rotation– Par rapport à un pivot
1) Translation T(-xr,-yr)2) Rotation d’un angle 3) Translation T(xr,yr)
Transformations géométriques 2D de base
• Changement d’échelle (scaling)– Changement des dimensions d’un objet
y
x
syy
sxx
'
'
Transformations géométriques 2D de base
• Changement d’échelle (scaling)– Sous forme matricielle
y
x
s
sS
y
xP
PSP
0
0
'
Transformations géométriques 2D de base
• Changement d’échelle (scaling)– Par rapport à un point de référence
f
f
yy
xxP
Scaling suivi d’une translation
f
f
y
x
y
x
t
tT
TPSP'
Transformations géométriques 2D de base
• Shearing– Déformation d ’un objet par rapport à un axe donné
yy
shyxx y
'
'
xshxyy
xx
'
'
Direction x
Direction y
Transformations géométriques 2D de base
• Shearing– Sous forme matricielle (Direction x)
10
1
'
yshSH
y
xP
PSHP
Transformations multiples (composite)
• Représentation matricielle et coordonnées homogènes– Dans plusieurs applications en graphisme des
séquences de transformations graphiques doivent être générées
– Les représentations matricielles servent de base pour modéliser de façon efficace ces séquences de transformations
– Les transformations de base peuvent s’écrire
21' MPMP
Où M1 est une matrice 2X2 et M2 une matrice 2X1
Transformations multiples (composite)
• Divers cas– Translation:
• M1: matrice identité
• M2: terme translationnel
– Rotation:
• M1: matrice de rotation
• M2: terme translationnel (pivot)
– Scaling:
• M1: matrice des changements d’échelle
• M2: terme translationnel (point de référence)
Transformations multiples (composite)
• Une séquence de transformations S-R-T s’effectue:– scaling des coordonnées des objets
– rotation des coordonnées transformées (après scaling)
– translation des coordonnées (après rotation)
• La combinaison de ces transformations permet d’améliorer l’efficacité en éliminant le terme additif M2
Transformations multiples (composite)
• Pour combiner les termes multiplicatifs et translationnels il faut utiliser une forme matricielle M1de 3X3
• Dans ce contexte nous pouvons représenter toutes les transformations sous forme de multiplication matricielle
• Il faut par contre modifier la représenta-tion matricielle des coordonnées des points constituant nos objets
Transformations multiples (composite)
• Les coordonnées cartésiennes (x, y) sont alors représentées sous forme homogène (xh, yh, h) ou x=xh/h et y=yh/h
• Alors une représentation en coordonnées homogènes généralisée peut aussi être déduite sous la forme (h x, h y, h)
• Nous choisissons par simplicité h=1, chaque position est alors représentée en coordonnées homogènes par (x, y, 1)
Transformations multiples (composite)
• Translation
PttTP
y
x
t
t
y
x
yx
y
x
),('
1100
10
01
1
'
'
• Rotation
PRP
y
x
y
x
)('
1100
0cossin
0sincos
1
'
'
Transformations multiples (composite)
• Scaling
PssSP
y
x
s
s
y
x
yx
y
x
),('
1100
00
00
1
'
'
Transformations multiples (composite)
• Shearing
PshshSHP
y
x
sh
sh
y
x
yx
x
y
),('
1100
01
01
1
'
'
Direction x: SH(shx=0,shy)Direction y: SH(shx,shy=0)
Transformations multiples (composite)
• Sachant que la multiplication matricielle est associative, les transformations successives sont alors représentées par une matrice 3X3 découlant de la concaténation des matrices individuelles
• 2 translations successives (tx1,ty1), (tx2,ty2)
PttTttTP yxyx ),(),(' 1122
Transformations multiples (composite)
• Cette transformation s’écrit
),(),(),(
100
10
01
100
10
01
100
10
01
21211122
21
21
1
1
2
2
yyxxyxyx
yy
xx
y
x
y
x
ttttTttTttT
tt
tt
t
t
t
t
Transformations multiples (composite)
• 2 rotations
PRP
RRR
PRRP
)('
)()()(
)()('
21
2112
12
Transformations multiples (composite)
• 2 scaling
),(),(),(
100
00
00
100
00
00
100
00
00
),(),('
21211122
21
21
1
1
2
2
1122
yyxxyxyx
yy
xx
y
x
y
x
yxyx
ssssSssSssS
ss
ss
s
s
s
s
PssSssSP
Transformations multiples (composite)
• Rotation par rapport à un pivot
Transformations multiples (composite)
• Matrice des transformations
),,(),()(),(
100
sin)cos1(cossin
sin)cos1(sincos
100
10
01
100
0cossin
0sincos
100
10
01
rrrrrr
rr
rr
r
r
r
r
yxRyxTRyxT
xy
yx
y
x
y
x
Transformations multiples (composite)
• Scaling avec un point de référence
Transformations multiples (composite)
• Matrice des transformations
),,,(),(),(),(
100
)1(0
)1(0
100
10
01
100
00
00
100
10
01
yxffffyxff
yfy
xfx
f
f
y
x
f
f
ssyxSyxTssSyxT
sys
sxs
y
x
s
s
y
x
Transformations multiples (composite)
• Forme générale
yyyyx
xxyxx
yyyyx
xxyxx
trsrsyrsxy
trsrsyrsxx
y
x
trsrsrs
trsrsrs
y
x
'
'
11001
'
'
• Complexité 4 X et + VS 9 X 6 +
Transformations multiples (composite)
• Par exemple, si un objet doit subir un changement d’échelle et une rotation par rapport au point (xc, yc) et par la suite une translation, la matrice composite devient
100
sin)cos1(cossin
sin)cos1(sincos
),,,(),,(),(
yxcycyx
xycxcyx
yxccccyx
tSxSySS
tSySxSS
SSyxSyxRttT
Transformations multiples (composite)
• Transformations entre systèmes de coordonnées– Un objet quelconque peut être défini dans un
système de coordonnées cartésien du monde (ex: scène du monde) mais les coordonnées du monde doivent être transformées au préalable pour permettre le positionnement de cet objet par rapport au système de coordonnées de l’écran avant son affichage
Transformations multiples (composite)
• Transformations entre systèmes de coordonnées– Pour transformer la description d’un objet
d’un système de coordonnées x y à x’y’ nous devons effectuer une transformation qui doit permettre la superposition des axes du système x’y’ sur ceux du système xy• Translation T(-x0, -y0)
• R(-)
Transformations multiples (composite)
• Transformations entre systèmes de coordonnées
Transformations multiples (composite)
• Transformations entre systèmes de coordonnées
0
0
0 0
0
0
' cos sin
' sin cos
1 0 0 1 1
' ( ) ( ,
' cos sin
' sin cos
x x x
y y y
P R T x y P
x x y x
y x y y
Visualisation 2D (Rappel)
• Une surface dans le système de coordonnées du monde sélectionnée pour l’affichage est appelée une fenêtre. Une surface sur un écran sur laquelle est projetée la fenêtre est un port de visualisation (viewport)
Visualisation 2D
• Les transformations de visualisations
Visualisation 2D
• Le passage des WC au VC
Visualisation 2D
• WC -> VC
WCVCWCWCVC PMPTRP ,
Visualisation 2D
• VC -> NVC
Visualisation 2D
• VC -> NVC– Pour maintenir les mêmes positions relatives
dans les deux représentations nous devons savoir
minmax
min
minmax
min
minmax
min
minmax
min
ywyw
ywyw
yvyv
yvyv
xwxw
xwxw
xvxv
xvxv
v: viewportw: window
Visualisation 2D
• VC -> NVC– Maintien des positions relatives
Visualisation 2D
• VC -> NVC– Nous pouvons alors déduire (xv,yv) par
minmax
minmax
minmax
minmax
minmin
minmin
)(
)(
ywyw
yvyvsy
xwxw
xvxvsx
syywywyvyv
sxxwxwxvxv
Visualisation 2D
• VC -> NVC– Séquences de transformations correspondantes
• Scaling avec comme point de référence (xwmin,ywmin) (fenêtre)
• Translation à la position du viewport (xvmin,yvmin)
Transformations géométriques 3D de base
• Translation– La translation d’un point 3D s’effectue par
l’addition des distances de décalage tx, ty et tz aux coordonnées d’origine du point (x,y,z) permettant son déplacement à la position (x’,y’,z’)
z
y
x
tzz
tyy
txx
'
'
'
Transformations géométriques 3D de base• Translation
– Sous forme matricielle (coordonnées homogènes)
PTP
z
y
x
t
t
t
z
y
x
z
y
x
'
11000
100
010
001
1
'
'
'
Transformations géométriques 3D de base
• Translation– La translation d’un objet 3D revient à déplacer les
points de l’objet. Pour un objet 3D représenté par un ensemble de surfaces polygonales, la translation est appliquée sur les sommets. Ensuite, l’objet est retracé
Transformations géométriques 3D de base• Translation d’un objet 3D
Transformations géométriques 3D de base
• Rotation– Pour faire subir une rotation à un objet 3D nous
devons désigner au préalable un axe et un angle de rotation
– Une rotation 3D peut s’effectuer par rapport à n’importe quel axe dans l’espace
– Les rotations les plus simples sont celles par rapport à des axes parallèles aux axes du système de coordonnées
– Par convention, un angle de rotation () positif produit une rotation anti-horaire par rapport à un axe de coordonnées
Transformations géométriques 3D de base
• Rotation
Transformations géométriques 3D de base
• Rotation 3D par rapport à l’axe z
zz
yxy
yxx
'
cossin'
sincos'
PRP
z
y
x
z
y
x
z
)('
11000
0100
00cossin
00sincos
1
'
'
'
Transformations géométriques 3D de base
• Rotation 3D par rapport à l’axe z
Transformations géométriques 3D de base
• Rotation 3D par rapport à l’axe x (x->y->z->x)
xx
zyz
zyy
'
cossin'
sincos'
PRP
z
y
x
z
y
x
x
)('
11000
0cossin0
0sincos0
0001
1
'
'
'
Transformations géométriques 3D de base
• Rotation 3D par rapport à l’axe x
Transformations géométriques 3D de base
• Rotation 3D par rapport à l’axe y (y->z->x->y)
yy
xzx
xzz
'
cossin'
sincos'
PRP
z
y
x
z
y
x
y
)('
11000
0cos0sin
0010
0sin0cos
1
'
'
'
Transformations géométriques 3D de base
• Rotation 3D par rapport à l’axe y
Transformations géométriques 3D de base
• Rotation 3D générale– Une rotation par rapport à un axe quelconque est
représentée par une combinaison de translations et de rotations par rapport aux axes de coordonnées
– Cas 1: Axe de rotation parallèle à un axe de coordonnées
• Translation de l’objet pour amener l’axe de rotation sur l’axe de coordonnées
• Rotation de l’objet par rapport à cet axe de coordonnées
• Translation de l’objet pour ramener l’axe de rotation à sa place originale
Transformations géométriques 3D de base
• Rotation 3D générale– Cas 1: Axe de rotation parallèle à un axe de
coordonnées
Transformations géométriques 3D de base
• Rotation 3D générale– Cas 1: Axe de rotation parallèle à un axe de
coordonnées
PTRTP x )(' 1
Transformations géométriques 3D de base
• Rotation 3D générale– Cas 2: Axe de rotation non parallèle à un axe de
coordonnées• Translation de l’objet pour faire passer l’axe de rotation
par l’origine
• Rotation de l’objet pour faire coïncider l’axe de rotation avec un des axes de coordonnées (axe z)
• Rotation de l’objet par rapport à cet axe de coordonnées
• Rotation inverse de l’objet pour ramener son axe de rotation à son orientation originale
• Translation inverse de l’objet pour ramener l’axe de rotation à sa place originale
Transformations géométriques 3D de base
• Rotation 3D générale– Cas 2: Axe de rotation non parallèle à un axe de
coordonnées
Transformations géométriques 3D de base
• Rotation 3D générale– Cas 2: Axe de rotation non parallèle à un axe de
coordonnées• Un axe de rotation peut être défini par 2 points ou par un
point et les cosinus directeurs entre l’axe de rotation et les axes de coordonnées
Transformations géométriques 3D de base
• Rotation 3D générale– Cas 2: Axe de rotation non parallèle à un axe de
coordonnées• Un vecteur axial est donné par
2 1
2 1 2 1 2 1( , , )
( , , )x y z
V P P
V x x y y z z
V V V V
Transformations géométriques 3D de base
• Rotation 3D générale– Cas 2: Axe de rotation non parallèle à un axe de
coordonnées• Un vecteur unitaire dans la direction de l’axe de rotation
est donné par
),,(
),,(
cbau
V
V
V
V
V
Vu
V
Vu
zyx
Transformations géométriques 3D de base
• Rotation 3D générale– Cas 2: Axe de rotation non parallèle à un axe de
coordonnées• Étape 1: Translation de l’axe de rotation
1000
100
010
001
1
1
1
z
y
x
T
Transformations géométriques 3D de base
• Rotation 3D générale– Cas 2: Axe de rotation non parallèle à un axe de
coordonnées• Étape 2: Rotation de l’axe de rotation sur l’axe z
– Rotation par rapport à l’axe x pour amener u dans le plan xz
– Rotation par rapport à l’axe y pour amener u sur l’axe z
Transformations géométriques 3D de base
• Rotation 3D générale– Cas 2: Axe de rotation non parallèle à un axe de
coordonnées• Étape 2: Rotation de l’axe de rotation sur l’axe z
– Rotation par rapport à l’axe x pour amener u dans le plan xz
1000
0//0
0//0
0001
)(dcdb
dbdcRx
Transformations géométriques 3D de base
• Rotation 3D générale– Cas 2: Axe de rotation non parallèle à un axe de
coordonnées• Étape 2: Rotation de l’axe de rotation sur l’axe z
– Rotation par rapport à l’axe x pour amener u dans le plan xz
» L’angle est l’angle entre la projection de u dans le plan yz et l’axe z
» La projection de u dans le plan yz est u’ = (0,b,c), cos et sin sont donnés par
d
b
cb
c
u
c
d
c
sin
'cos
22
Transformations géométriques 3D de base
• Rotation 3D générale– Cas 2: Axe de rotation non parallèle à un axe de
coordonnées• Étape 2: Rotation de l’axe de rotation sur l’axe z
– Rotation par rapport à l’axe y pour amener u sur l’axe z
a
d
da
ad
Ry
sin
cos
1000
00
0010
00
)(
Transformations géométriques 3D de base
• Rotation 3D générale– Cas 2: Axe de rotation non parallèle à un axe de
coordonnées• Étape 3: Rotation de l’objet par rapport l’axe z
1000
0100
00cossin
00sincos
)(
zR
Transformations géométriques 3D de base
• Rotation 3D générale– Cas 2: Axe de rotation non parallèle à un axe de
coordonnées• Pour accomplir les étapes 4 et 5 il faut effectuer les
transformations inverses Rx-1, Ry
-1et T-1
• La matrice de transformation composée est alors
TRRRRRTR xyzyx )()()()()()( 111
Transformations géométriques 3D de base• Changement d’échelle 3D
z
y
x
Szz
Syy
Sxx
'
'
'PSP
z
y
x
S
S
S
z
y
x
z
y
x
'
11000
000
000
000
1
'
'
'
Transformations géométriques 3D de base• Changement d’échelle 3D
Transformations géométriques 3D de base• Changement d’échelle 3D relatif à un point de
référence
),,(),,(),,('
1000
)1(00
)1(00
)1(00
'
fffzyxfff
fzz
fyy
fxx
zyxTSSSSzyxTS
zSS
ySS
xSS
S
Transformations géométriques 3D de base
• Exemple
Sommaire des transformations en OpenGL
• Pipeline de transformations de OpenGL
Sommaire des transformations en OpenGL
• Sommaire des transformations– Visualisation: Permet de spécifier la position de
l ’observateur– Modélisation: Permet le déplacement des objets
dans la scène– MODELVIEW: Représente la dualité entre les
transformations de visualisation et de modélisation– Projection: Permet le découpage et le dimensionne-
ment du volume de visualisation– Viewport: Permet la mise à l ’échelle finale dans le
fenêtre d ’affichage
Sommaire des transformations en OpenGL
• Transformation MODELVIEW– Les transformations de modélisation et de visualisation
son dual l ’un avec l ’autre– Il n ’existe pas de différence entre déplacer un objet
vers l ’arrière et déplacer le système de coordonnées de visualisation dans le sens inverse (vers l ’avant)
– Il n ’existe pas de différence à faire une rotation sur un objet et appliquer une rotation - sur le système de coordonnées de visualisation
– Le terme MODELVIEW indique que nous pouvons voir cette transformation comme étant soient de modélisation ou de visualisation
Sommaire des transformations en OpenGL
• Matrice MODELVIEW– Matrice de 4X4, représente la transformation requise
pour transformer les coordonnées du monde en coordonnées de visualisation
– Exemple de translation (cube)glutWireCube(10.0f); // dessine un cube de 10 unités
// centré par rapport au système de
// coordonnées de visualisation
glTranslatef(0.0,10.0f,0.0f)
glutWireCube(10.0f);
Sommaire des transformations en OpenGL
• Matrice MODELVIEW– Exemple de rotation (cube)
glutWireCube(10.0f);
glrotatef(90.0f,1.0f,1.0f,1.0f)
glutWireCube(10.0f);
Sommaire des transformations en OpenGL
• Matrice MODELVIEW– Exemple deux translations (cube)
glutWireCube(10.0f);
glTranslatef(0.0,10.0f,0.0f)
glutWireCube(10.0f);
glTranslatef(10.0,0.0,0.0f)
glutWireCube(10.0f);
Sommaire des transformations en OpenGL
• Matrice MODELVIEW– Exemple deux translations par rapport au système de
coordonnées de visualisation (cube)glutWireCube(10.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0.0,10.0f,0.0f)
glutWireCube(10.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(10.0,0.0,0.0f)
glutWireCube(10.0f);
Sommaire des transformations en OpenGL
• Voir l ’exemple ATOM pour l ’utilisation des transformations de base
Sommaire des transformations en OpenGL
• Voir l ’exemple ATOM pour l ’utilisation des transformations de base