Transformations géométriques avec OpenGL
Ce travail consiste à modifier un programme initial pour s'initier
progressivement aux transformations géométriques. Créez un répertoire tp1 et recopiez-y les fichiers
cube1.c
et
Makefile.
Compilez et exécutez le programme cube1.c. Identifiez dans le code ses principaux composants:
- fonction de dessin
- fonction de prise en compte des touches du clavier
- fonction de prise en compte d'un changement de taille de fenêtre
- initialisations diverses
- branchement des composants de la boucle principale
- lancement de la boucle principale
Compilez et exécutez le programme. En utilisant les touches du clavier,
éloignez-vous du cube. Que finit-il par arriver ? Et en se rapprochant
? Sur le compte-rendu, faites un schéma en dimension 2 pour expliquer
le phénomène.
La face arrière du cube apparaît beaucoup plus petite que sa face
avant. Faites un schéma pour expliquer ce phénomène. Sur le même
schéma, montrez comment réduire cette distorsion (sans l'annuler).
Modifiez les paramètres de glFrustum pour vérifier. Copiez les schémas et les nouveaux paramètres sur le compte-rendu.
Redimensionnez la fenêtre horizontalement. Que se produit-il ?
Expliquez sur un schéma. Copiez ce schéma sur le compte-rendu. Modifiez
le programme pour que les proportions du cube se conservent lors des
redimensionnements de fenêtre. Expérimentez en redimensionnant
verticalement ou horizontalement.
Afin de distinguer les directions principales de l'objet affiché,
on désire lui donner une forme de boîte deux fois plus allongée en X
qu'en Y, et deux fois plus allongée en Y qu'en en Z. Étirez le cube à
l'aide d'une transformation d'échelle (glScale) pour obtenir ce résultat. Recopiez cette instruction sur le compte-rendu.
Décalez l'objet d'une unité vers la droite et tournez-le de 45 degrés autour de l'axe vertical à l'aide de glTranslate et glRotate.
Prenez de la hauteur en montant la caméra d'une unité vers le haut et
en inclinant son axe de manière à ce que le cube reste
approximativement au centre de l'image. On pourra essayer
successivement les deux méthodes suivantes:
- à l'aide d'une translation et d'une rotation (recopiez les deux instructions sur le compte-rendu)
- à l'aide de la fonction gluLookAt décrite dans le manuel en ligne.
Compilez et essayez le programme
traqueboule.c. Faites tourner l'objet au moyen de la souris.
Comparez-le au programme
traqueeuler.c. Quel est le problème avec traqueeuler.c ? D'où vient-il ?
Francois Faure
2003-01-31