Corrig D Examen Infographie 2017 2 [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

Université de Khemis Miliana 3ème année Informatique

2016 / 2017 matière : infographie- opengl

Corrigé de l'Examen Final

20 20

Partie I): Question 1 (0.75 point): Quelle(s) librairie(s) ne fait (font) pas partie du monde opengl -Aux ☐ -Glu ☐ 0.75 -Glx ☐ -Tux ☐ X Question 2(0.75 point): La technique de Z buffer consiste à -Masquer une partie de l’image (masque de Zorro) ☐ -Remplissage d’une matrice écran ☐ X 0.75 -Une subdivision de segments ou faces se coupant ☐ -Remplir une zone en parcourant les pixels en Z ☐ Question 3(0.75 point):A quoi fait référence le A de GL_RGBA -A la valeur Ambiante ☐ -A indiquer que les couleurs sont en décimal ☐ 0.75 -A gérer les paramètres d’atténuation ☐ -A gérer le paramètre de transparence ☐ X Question 4(0.75 point): Cette image est caractéristique d’une :

☐  ☐ X ☐ X ☐

-Projection en perspective -Projection orthogonale -Projection parallèle -Projection symétrique

03 03

0.75

07

Partie II):

07

1 • Que signifie openGL ?(1point)

OpenGL est une librairie graphique 3D disponible sur de nombreuses plate-formes (portabilité) qui est devenu un standard en infographie. C’est un langage procédural (environ 200 fonctions) qui permet de donner des ordres de tracé de primitives graphiques 1 (segments, facettes, etc.) directement en 3D 2 • Que signifie glut ?(1point) OpenGL Utility Toolkit (GLUT)

1

Bibliothèque écrite pour rendre simple la programmation de petites applications dans le cadre d'interfaces graphiques interactives simples. 3 • Quelles sont les propriétés d’openGL ?(1point)

C’est une machine à états qui permet de définir un contexte de tracé : position de caméra, projection 2D, couleurs, lumières, matériaux... OpenGL se charge de faire les changements de repère, la projection à l'écran, le « clipping » (limites de visualisation), l'élimination des parties cachées, l'interpolation les couleurs, et de la « rasterisation » (tracer ligne à ligne) des faces pour en faire des pixels. 1 Fonctions de base pour l'affichage 3D en OpenGL: • Dessin de sommets, de segments de droite et de facettes • Matériaux et lumières • Transformations géométriques • Caméras • Textures • Gestion des paramètres de rendu • ...

Pas de fonction pour la construction d'une interface utilisateur (fenêtres, souris, clavier, gestionnaire d'événements, ...) -Préfixe des fonctions:gl -Librairie standard -En langage C, déclarations dans le fichier GL/gl.h 4 • Quelles sont les propriétés de glut ?(1point)

• Gestion d'une fenêtre d'affichage • Gestion de la souris • Gestion du clavier • ... Programmation événementielle • Gestion des menus • Gestion des environnements multifenêtrés • Existence de polices de caractères bitmap et vectorielles intégrées • Gestion de périphériques d'entrée supplémentaires 1 • ... plus grande puissance et mais plus grande complexité Préfixe des fonctions: glut Librairie non standard mais très couramment utilisée -Librairie non spécifique à un système d'exploitation -En langage C, déclarations dans le fichier GL/glut.h 5 • Que fait la fonction glEnable(GL_LIGHTING)?(1point)

Activation de la gestion des lumières et des matériaux,

1

6 • Que fait la fonction glOrtho(left, right, bottom, top, near ,far) ?(1point)

1

Pour la projection orthogonale appelée projection orthographique le volume de vue est un parallélépipède rectangle. Ainsi la taille des objets n’est pas influencée par la distance au point de vue.

7 • Que fait la fonction glMaterialfv (GL_FRONT_AND_BACK, GL_SHININESS, mat_shininess)?(1point)

Permet de modifier les paramètres du matériau courant: la face arrière et avant, couleur 1 ambiante/diffuse/spéculaire, brillance,….. Exercice1 : Les matrices de transformation en coordonnées homogènes pour chaque type de transformation sont:

0 1   0 cos(ax)  Rotation R1  0 sin(ax)  0 0  1 0 0  0 1 0  Translation T1  0 0 1  0 0 0 

0 0   sin(ax) 0  cos(ax) 0   0 1  dx1  dy1 0.5 dz1  1 

0.5

2.5 2.5

1 0  0 1 Translation T2   0 0  0 0  cos( ax)    0 Rotation R2   sin(ax)   0 

0 dx 2   0 dy 2  0.5 1 dz 2   0 1  0  sin(ax) 0   1 0 0 0 cos(ax) 0   0 0 1 

0.5

Matrice globale de transformation en coordonnées homogènes  

 cos(ax)   0  sin(ax)   0 

0  sin(ax) 0  1  1 0 0  0 0 cos(ax) 0  0  0 0 1  0

0 0 dx 2  1  1 0 dy 2  0 0 1 dz 2  0  0 0 1  0

0.5

0 0 dx1 1 0 0  1 0 dy1 0 cos(ax)  sin(ax) 0 1 dz1 0 sin(ax) cos(ax)  0 0 1  0 0 0

0  1  0  0 0  0  1  0

0 0 0  1 0 0 0 1 0  0 0 1 

Exercice2 : 7.5 7.5

Pour ceci, on divisera la fusée en trois parties: un cylindre, un cône et les ailerons. Axe Y

axe Z

1.5 axe X/Y 3 20°

2

1

1

Axe X

Programme OpenGL #include #include 0.5 #include #include #include void init(void); void cylindre(float r, float h); void cone(float r, float h); void ailerons(float r, float h); void scene(void) ; void display(void); void reshape(int x,int y);

0.5

/* Variables et constantes globales */ static const float blanc[] = { 1.0F,1.0F,1.0F,1.0F }; static const float gris[] = { 0.7F,0.7F,0.7F,1.0F }; static int aff = 1; /* Fonction d'initialisation des parametres */ void init(void) { 0.5 const GLfloat mat_shininess[] = { 50.0 }; glMaterialfv(GL_FRONT,GL_SPECULAR,blanc); glMaterialfv(GL_FRONT,GL_SHININESS,mat_shininess); glLightfv(GL_LIGHT0,GL_DIFFUSE,gris); glLightfv(GL_LIGHT1,GL_DIFFUSE,gris); glLightfv(GL_LIGHT2,GL_DIFFUSE,gris); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glEnable(GL_LIGHT1); glEnable(GL_LIGHT2); glEnable(GL_DEPTH_TEST); glEnable(GL_NORMALIZE); glEnable(GL_AUTO_NORMAL); } /* Scene de dessin d'un cylindre */ Void cylindre(float r,float h) { 1 glPushMatrix(); glBegin(GL_POLYGON); glColor3ub(255,0,0); //face rouge for(i=0,i