P1C3 - Transformations géométriques Flashcards

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

A

xe=x0, ye=y0

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
Q

Algorithme de Cohen-Sutherland

A
  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
Q

Volume de vision parallélépipédique

A
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
Q

Elimination des faces arrières

A

Si objets convexes à facettes planaires

si V.n < 0 alors invisible (v dans le sens de z)

28
Q

Algorithme du peintre

A

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
Q

Algorithme du Z-buffer

A

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
Q

Trouver z en tout point d’un polygone

A
  • 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
Q

OpenGL Z-buffer

A

depth buffer à rafraîchir entre 2 affichages