Correction
examen |
|
Mercredi 17 novembre 2004 - 1h25 | |
Question 1: Modélisation par facettes en OpenGL La sphère est modélisée par un ensemble de facettes quadrangulaires se
recollant sur leurs bords en une surface facettisée. Cette surface facettisée est
fermée et donne l'illusion d'un volume. Les sommets sont générés par itération
uniforme sur les valeurs u et t de la formule dans leurs intervalles respectifs de
variabilité. La modélisation OpenGL est réalisée au moyen de QUAD_STRIP. Les normales utilisées sont les véritables normales calculée pour une sphère de rayon 1 centrée sur l'origine. Au point de coordonnées (x, y, z) d'une telle sphère, la normale extérieure est le vecteur de coordonnées (x, y, z). Les coordonnées de texturage utilisées varient uniformément entre 0 et
1 pour chacun des deux axes en parallèle à la variation uniforme de u et t pour la
génération des sommets. Exam-TD1-2004-2005-Exo1 Question 2: Bresenham pour le tracé de segments La généralisation de l'algorithme de Bresenham nécessite de pouvoir: Exam-TD1-2004-2005-Exo2 Question 3: Paramètrage de caméras en VRML Le champs position définit la position de la caméra. Par défaut, la caméra de visualisation en projection en perspective de VRML est orientée selon l'axe -z. Le champs orientation définit une rotation appliquée à cet axe permettant d'obtenir l'orientation souhaitée. Le champs focalDistance est ignoré. Le champs heightAngle définit la valeur d'ouverture verticale de la caméra. Il s'agit d'un angle en radian.
Depuis la position (0.0, 100.0, 0.0), la direction de visualisation (0.0, -1.0, 0.0) permet de "regarder" l'origine. Une rotation de -p/2 (-1.5708) radian autour de l'axe x (1.0, 0.0, 0.0) permet de transformer -z en -x. Une valeur approximative de heightAngle peut être obtenue en divisant la
taille de l'objet visualisé par sa distance (si la taille est petite vis à vis de la
distance).
Depuis la position (200.0, 200.0, 0.0), la direction de visualisation
(-1.0, -1.0, 0.0) permet de "regarder" l'origine. Une rotation de p/2 (1.5708) radian autour de l'axe x (-1.0, 1.0, 0.0) permet de
transformer (0.0, 0.0, -1.0) en (-1.0, -1.0, 0.0). heightAngle = 20.0/200.0/sqrt(2) = sqrt(2)/10.0 = 0.707 Exam-TD1-2004-2005-Exo3bv1.wrl Une autre solution où l'on "tourne" de 180° (p radians) autour de l'axe bissecteur entre les directions (0.0, 0.0, -1.0) et (-1.0, -1.0, 0.0). Exam-TD1-2004-2005-Exo3bv2.wrl Question 4: Animation en OpenGL + GLUT L'unique variable utilisée pour gérer l'animation est un compteur d'images.
La fonction idle incrémente le compteur d'image et le replace à zéro
s'il dépasse le nombre total d'images à chaque tour le la sphère sur la trajectoire
carrée.
Outre tous les appels de fonctions initiaux (effacement de la fenêtre de
dessin, empilement de la transformation courante) et finaux (dépilement de la
transformation courante, synchronisation de l'affichage, swap si un double-buffer est
utilisé) nécessaires à son fonctionnement, la fonction display modélise la scène. Exam-TD1-2004-2005-Exo4 |
|
Quelques indications sur l'évaluation Tous les exercices sont affectés du même coefficient. |
|
Remarques, erreurs |