Informatique Graphique IG1, énoncé TD11 Licence 3
Transcription
Informatique Graphique IG1, énoncé TD11 Licence 3
Informatique Graphique IG1, énoncé TD11 Licence 3 - Master 1 d’informatique Christian Jacquemin, Université Paris 11 Suppression de face cachées et déplacement — Séance 11 Ex. 1 Dans cet exercice, on se propose d’utiliser l’algorithme de tri des faces de l’arbre binaire de partition de l’espace pour afficher un ensemble de solides au cours d´un déplacement sans utiliser le z-buffer. On choisit comme modèle de données géométriques un sous-ensemble des bâtiments du campus scientifique d’Orsay de l’Université Paris 11. Les bâtiments sont indiqués en grisé dans la figure 1. Le parcours effectué au sein de ces volumes est représenté par une alternance de segments et de courbes de Bézier orientés sur cette même figure. Ces données se retrouvent sur la figure 2 avec les axes du repère, les normales aux faces et les orientations des segments du parcours. Les courbes de Bézier sont des courbes d´ordre 3 à trois points de contrôle. Chaque courbe est contruite de sorte à être tangente aux segments qui la précèdent et la suivent immédiatement. Les trois points de contrôles sont donc l´extrémité finale du segment précédent, l´extrémité initiale du segment suivant et l´intersection des segments précédents et suivants. La figure 3 précise la construction du parcours et détaille la construction de la courbe de Bézier no 12. Ces données vous seront fournies sous formes de structures de données pour le langage C lors de la séance de TD. Les faces sont données comme un tableau de points, deux points consécutifs P2n et P2n+1 formant la face P2n P2n+1 . Les traces au sol des bâtiments sont toutes parcourues dans le sens inverse du sens trigonométrique (par rapport à l’orientation du repère fournie dans la figure 2). Une normale à une face P2n P2n+1 est donc le vecteur obtenu en faisant faire une rotation −−−−−−→ de Π2 au vecteur P2n P2n+1 . float Faces[NB_FACES * 2][2] = { {2550.0,3975.0}, {2550.0,4275.0}, {2550.0,4275.0}, {3375.0,4275.0}, ... }; Les segments parcourus lors du déplacement sont donnés sous forme de structures composées d’un entier donnant le type de la courbe (segment ou courbe de Bézier à trois points de contrôle) et trois points de contrôle. Dans le cas d’un segment, les extrémités correspondent au premier et troisième points de contrôle. #define _Segment 0 #define _Bezier 1 struct unSegment{ int typeCourbe; float debut[2]; float intermed[2]; float fin[2]; } Parcours[NB_SEGMENTS] = { {0, {13350, 7350}, {0.0, 0.0}, {12500, 7100}}, // cote ouest 1 {1, {12500, 7100}, {12000, 6952.9}, {12000, 6600},... 1 Licence 3 - Master 1, IG1, TD11 2 400 410 425 440−447 450 406 403 409 407 420 460−470 452 430 490 498 380−381 308 300 350 499 350B F IG . 1 – Plan d’une partie du campus scientifique d’Orsay avec les bâtiments et le trajet du déplacement. 1. Construire l’arbre binaire de partition de l’espace à partir des faces des bâtiments. On se placera en dimension 2 et on ne tiendra compte que des traces des faces dans le plan xOy. On commencera par calculer les vecteurs normaux aux faces des bâtiments. 2. On suppose une position d’observateur Ω(xobs , yobs ) donnée. Réaliser un parcours infixé de l’arbre qui trie les faces dans l’ordre de leur affichage pour une vue à partir de Ω. 3. Réaliser une fonction de parcours qui avance sur les segments de la trajectoire d’un pas linéaire constant. Pour la qualité de l’affichage et pour la vraisemblance du parcours, on divisera par 3 la vitesse linéaire lors du parcours des parties courbes de la trajectoire. 4. Combiner la fonction de parcours et l’affichage des faces. On donnera à toutes les faces une hauteur constante de 300.0. On orientera la caméra dans le sens du vecteur vitesse pour donner l´impression de regarder vers l´avant lors du déplacement. 5. Ajouter la possibilité de s´élever au-dessus du campus au moyen des touches de saut de page avant ou arrière. Lorsque la caméra dépasse la hauteur des bâtiments, afficher les toits. Les toits étant pour la plupart des polygones concaves, on utilisera un Tesselator pour l´affichage. (Le Tesselator se charge de décomposer les polygones concaves en triangles avant de les afficher.) 6. Au moyen de la barre d´espace faire basculer le programme dans un mode de déplacement autonome. On utilisera les touches → et ← pour la rotation gauche ou droite et les touches ↑ et ↓ pour l´accélération ou le ralenti linéaire. On ne demande pas de gérer les intersections avec les volumes. Licence 3 - Master 1, IG1, TD11 O 3 x y F IG . 2 – Modèle de données géométriques (faces, normales et segments du parcours) correspondant au plan de la figure 1 Licence 3 - Master 1, IG1, TD11 4 5 6 4 3 7 2 1 12 8 11 9 10 Segment suivant (1) Points de contrôle P3 P2 Courbe de Bézier (12) P1 Segment précédent (11) F IG . 3 – Parcours (avec les sommets et les côtés des polygones de contrôle des courbes de Bézier) et détails pour la courbe no 12.