P1C3 - Transformations géométriques Flashcards

(31 cards)

1
Q

Repères

A

objet, scène, observateur (caméra), écran
Repère indirect/direct (lié à l’observateur)
direct -> z vers l’arrière, y haut tete, x bras droit

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Coordonnées cartésiennes/sphériques

A

x=RcosΦcosΘ
y=RcosΦsinΘ
z=RsinΦ

R=√(x²+y²+z²)
Θ=atan(y/x)
Φ=atan(z/√(x²+y²))

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Transformation

A

X’=MX ->besoin de coordonnées homogènes pour translation

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Coordonnées homogènes

A

à tout point (x,y,z) on fait correspondre (h1,h2,h3,s)

  • h1 = s.x, h2=s.y, h3=s.z (s facteur d’échelle)
  • s=0 -> point à l’infini
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Translation

A

1 0 0 xt
0 1 0 yt
0 0 1 zt
0 0 0 1

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Changement d’échelle

A

ex 0 0 0
0 ey 0 0
0 0 ez 0
0 0 0 1

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Symétrie par rapport à un plan (xz)

A
1  0 0 0
0 -1 0 0
0  0 1 0
0 0 0 1
(identité avec -1 à l'axe normal)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Rotation (x,⍺)

A

1 0 0 0
0 cos⍺ -sin⍺ 0
0 sin⍺ cos⍺ 0
0 0 0 1

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Rotation (y,⍺)

A

cos⍺ 0 sin⍺ 0
0 1 0 0
-sin⍺ 0 cos⍺ 0
0 0 0 1

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Rotation (z,⍺)

A

cos⍺ -sin⍺ 0 0
sin⍺ cos⍺ 0 0
0 0 1 0
0 0 0 1

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Composition des transformations

A

De droite à gauche

  1. Mise à l’échelle
  2. Rotation
  3. Translation
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Rotation d’un objet en (a,b,c) autour d’un axe // à l’axe x

A

M = T(a,b,c).R(x,⍺).T(-a,-b,-c)

commence par une translation au centre

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Transformation de coordonnées (ex: polarview)

A

à voir

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Repère observateur openGL

A

matrice ModelView (combine déplacement de scène et position de l’observateur)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Transformations openGL

A

glTranslate( ), glRotate( ), glScale( )
glPushMatrix( ), glPopMatrix( ), glLoadMatrix( )
Attention : produit de matrice à droite, ordre inversé
(1. Translation, 2. Rotation, 3. Echelle)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Types de projections

A

Non planaire (perspectives 1/2/3 pts de fuite), planaires (parallèles obliques, orthogonales)

17
Q

Projection perspective

A
Centre de projection = position de l'observateur
Plan de projection ⏊ -Z (axe de visée de l'observateur)
Soit P(x0,y0,z0), thalles xe/d=x0/z0 et ye/d=y0/z0
Donc xe=x0/z0 *d, ye=y0/z0 *d
18
Q

Projection parallèle

19
Q

OpenGL

A

Matrice GL_PROJECTION
glFrustum(left, right, bottom, top, zNear, zFar)
gluPerspective(angleFovy, ratio, zNear, zFar)
glOrtho(left, right, bottom, top, zNear, zFar)

20
Q

Fenetre

A

W Domaine à visualiser (points W1 et W2 bas gauche/haut droit)

21
Q

Clôture

A

V Zone où sera projeté le contenu de la fenêtre (V1 V2)

22
Q

Passage fenêtre-clôture d’un point R de W en un point E de V

A

xe=(xr-xw1)/(xw2-xw1) * (xv2-xv1) + xv1

ye=(yr-yw1)/(yw2-yw1) * (yv2-yv1) + yv1

23
Q

OpenGL fenêtrage/cadrage

A

glViewport( )

zone où sera affichée l’image

24
Q

Fenêtrage

A

2D ou 3D (volume de vision), élimination des parties de la scène non visualisées avant de faire tous les calculs (suivant position de l’observateur, ou encore objets éloignés trop petits)

25
Algorithme de Cohen-Sutherland
1. Affecter un code de 6 bits à chaque extrémité du segment (extrémité à gauche du volume, à droite du volume, en dessous, au dessus, devant, derrière) 2. Classer les segments : - si code1=000000 et code2=000000 visible totalement - sinon si (code1 et code2 ≠ 000000) invisible - - sinon potentiellement partiellement visible 3. Examiner les segments restants : - calcul d'intersection du segment avec le plan du volume concerné et refaire 1/2
26
Volume de vision parallélépipédique
``` sur plan (h,w // centre) x=-w/d *z, x=w/d *z (projections plans gauche/droite) y=h/d *z, y=-h/d *z (projections plans sup/inf) plan avant : z=zavant, plan arrière z = zarriere ```
27
Elimination des faces arrières
Si objets convexes à facettes planaires | si V.n < 0 alors invisible (v dans le sens de z)
28
Algorithme du peintre
Dans l'espace objet, n objets O(n²) - élimination faces arrières - tri selon zmin - étude des chauvauchements en x,y,z - affichage dans l'ordre des faces
29
Algorithme du Z-buffer
Dans l'espace image, n objets p pixels O(np) Tampon écran de la taille de l'image, on stocke les profondeurs de chaque pixel représentant la scène. Ordre des polygones sans importance. Initialiser Zbuffer valeur minimum, videoBuffer à la couleur de fond Supprimer les faces arrières Pour chaque polygone: - pour chaque pixel (x,y) du polygone: - calculer la profondeur z(x,y) du pixel - si z(x,y) > Zbuffer(x,y) //objet plus proche - écrire les attributs du polygone dans la mémoire image et remplacer Zbuffer(x,y) par z(x,y)
30
Trouver z en tout point d'un polygone
- projection parallèle : z = -(Ax+By+D)/C ou encore (balayage simplifié) si z0=(x,y), (x+l,y)=z0 - 1/C (avec A, B, C, D trouvés par la normale AC^AB) - projection perspective : f : distance de l'écran à l'observateur z = - Df / (Ax + By +Cf)
31
OpenGL Z-buffer
depth buffer à rafraîchir entre 2 affichages