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.

Documents pareils