SUJETS SPÉCIAUX EN INFORMATIQUE I PIF-6003. Contenu du cours Transformations géométriques des...

Preview:

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