Examen de TD n°2 2006-2007

RETOUR

6 décembre 2006 - 1h20

Tous les documents sont autorisés.

Question 1: Primitive graphique OpenGL et placage de texture

Dans le cadre d'une application de modélisation et d'affichage graphique des planètes du système solaire, on souhaite dessiner la planète Saturne munie de ses anneaux.

Pour cela, on va dessiner une sphère de rayon 60000.0 pour la planète elle-même ainsi qu'un anneau plan (disque avec un grand trou central) de rayon externe égal à 135000.0 et de rayon interne égal à 105000.0. Cet anneau unique sera texturé pour donner l'impression qu'il est composé d'une multitude d'anneaux élémentaires et éventuellement le rendre partiellement transparent.

Le tableau contenant la bitmap utilisable en tant que texture est créé par la fonction unsigned char *textureAnneaux(void) pour une taille de 128 sur 128 pixels RGBA. Cette fonction est déjà écrite et n'a donc pas à être écrite.

Ecrire une fonction void saturne(void) permettant la modélisation de cette planète par dessin d'une sphère GLUT (donc non texturée) et modélisation des " anneaux " au moyen d'une ou plusieurs primitives graphiques GL texturées avec normales. La sphère et les " anneaux " seront centrés sur l'origine du repère. Les " anneaux seront dessinés dans le plan xOz.

Correction

Question 2: Remplissage de polygones

Dans le cadre d'un algorithme de rasterisation de polygones convexes, on utilise une fonction d'extraction des pixels de cotés permettant de calculer le tableau x[y] contenant pour un coté c, pour toutes les ordonnées y où seraient dessinés les pixels de c, l'abscisse du (ou d'un parmi les) pixel(s) d'ordonnée y de c.

Cette fonction pourra être utilisée pour calculer la position des pixels des contours gauche et droit d'un polygone convexe à rastériser pour ensuite dessiner les trames horizontales de pixels de bas en haut (ou de haut en bas) et ainsi " remplir " le polygone.

Spécifier et écrire une telle fonction d'extraction de coté.

Correction

Question 3: Clipping

L'algorithme de Cohen-Sutherland permet le clipping de segments de droites 2D dans des rectangles 2D à 2 cotés horizontaux et 2 cotés verticaux.

Décrire sans l'implanter une généralisation de cet algorithme au découpage de segments de droites 2D dans des polygones convexes 2D. On précisera les difficultés spécifiques à cette généralisation par rapport à la version classique et quelles solutions y sont apportées.

Correction

Question 4: Mathématiques des matrices

On considère la suite de 4 transformations géométriques consistant à effectuer dans l'ordre :

  • une rotation R1 de a radians autour de l'axe Oz,
  • une translation T1 de vecteur (tx1, 0.0, 0.0),
  • une rotation R2 de b radians autour de l'axe Oz,
  • une translation T2 de vecteur (tx2, 0.0, 0.0).

Calculer la matrice de transformation représentative de cette transformation géométrique composition de 4 transformations canoniques.

Correction

Remarques, erreurs
nicolas.janey@univ-fcomte.fr