z y x Repère des objets (repère de modélisation) x z y Repère du monde
z y x x z y x z y glTranslatef(-3,0,0); glBegin(GL_TRIANGLES); glVertex2f(2,0); glVertex2f(4,0); glVertex2f(3,3); glEnd();
z y x x z y glTranslatef(-3,0,0); glBegin(GL_TRIANGLES); glVertex2f(2,0); glVertex2f(4,0); glVertex2f(3,3); glEnd();
z y x x z y glBegin(GL_POLYGONE); glVertex2f(0,0); glVertex2f(2,0); glEnd(); x z y
Vue du repère du monde z y x y a x z 1. Rotation autour de y 2. Translation en x
Vue du repère du monde z y x z y x 1. Translation en x 2. Rotation autour de y
Vue du repère du monde z y x y x z 1. Rotation autour de y 2. Translation en x 1. Translation en x 2. Rotation autour de y
Vue du repère de l’objet z y x Vue du repère de l’objet z y x y a x z 1. Rotation autour de y 2. Translation en x
Vue du repère de l’objet z y x Vue du repère de l’objet z y x y x z 1. Rotation autour de y 2. Translation en x 1. Translation en x 2. Rotation autour de y
Vue du repère du monde z y x y x z 1. Rotation autour de y 2. Translation en x 1. Translation en x 2. Rotation autour de y
z y x x z y glTranslatef(-3,0,0); glRotatef(1,0,45,0); glBegin(GL_POLYGONE); glVertex2f(0,0); glVertex2f(2,0); glVertex2f(2,2); glVertex2f(0,2); glEnd(); x z y
POT – chapitre 2, concept 1.2, 1.7, 1.8 et 1.9 Repère relatif à l’objet - transformations dans l’ordre de leur déclaration Repère du monde - transformations dans l’ordre inverse de leur déclaration
z y x x’ z’ y’ x z y glTranslatef(-3,0,0); glBegin(GL_POLYGONE); glVertex2f(0,0); glVertex2f(2,0); glVertex2f(2,2); glVertex2f(0,2); glEnd(); x’ z’ y’ x z y
z y x x’ z’ y’ glTranslatef(-3,0,0); glRotatef(1,0,45,0); glBegin(GL_POLYGONE); glVertex2f(0,0); glVertex2f(2,0); glVertex2f(2,2); glVertex2f(0,2); glEnd(); x’ z’ y’
sauvegarde du contexte courant glPushMatrix() : recopie la matrice courante au sommet de la pile sauvegarde du contexte courant glPopMatrix() : supprime la matrice au sommet de la pile restauration du contexte précédent
Exemple du playmobil void dessineCorps() { glBegin(GL_POLYGON); glVertex2f(-1,0); glVertex2f( 1,0); glVertex2f( 1,3); glVertex2f(-1,3); glEnd(); }
Exemple du playmobil void dessineJambe() { glBegin(GL_POLYGON); glVertex2f( 0 ,0); glVertex2f(0.5,0); glVertex2f( 0 ,2); glVertex2f(0.5,2); glEnd(); }
Exemple du playmobil dessineCorps(); Déplace le repère objet en (0.5,-2) dessineJambe(); Déplace le repère objet en (-1,-2)
Exemple du playmobil dessineCorps(); Déplace le repère objet en (0,-2)
Exemple du playmobil dessineCorps(); Déplace le repère objet en (0,-2) Sauvegarde le contexte
Exemple du playmobil dessineCorps(); Déplace le repère objet en (0,-2) Sauvegarde le contexte Décale le repère à droite dessineJambe();
Exemple du playmobil dessineCorps(); Déplace le repère objet en (0,-2) Sauvegarde le contexte Décale le repère à droite dessineJambe(); Restaure le contexte
Exemple du playmobil dessineCorps(); Déplace le repère objet en (0,-2) Sauvegarde le contexte Décale le repère à droite dessineJambe(); Restaure le contexte
Exemple du playmobil dessineCorps(); Déplace le repère objet en (0,-2) Sauvegarde le contexte Décale le repère à droite dessineJambe(); Restaure le contexte Décale le repère à gauche
Exemple du playmobil dessineCorps(); glTranslate2f(0,-2); glPushMatrix(); glTranslate2f(0.5,0); dessineJambe(); glPopMatrix(); glTranslate2f(-1,0);