Licence d'Informatique

340 - Informatique Graphique


Examen (3h) - juin 1997

Documents autorisés : 2 feuilles A4 de notes personnelles.

Lisez l'ensemble de l'énoncé. Soyez clair, précis, concis. Justifiez vos réponses. Relisez-vous.

 

Exercice A (6 points)

L'algorithme de tracé de cercle par la méthode du point médian considère uniquement des cercles définis par un centre et un rayon à valeurs entières. Cependant lorque l'on définit un cercle par son carré englobant, le rayon et le centre du cercle peuvent être demi-entiers (c'est-à-dire de la forme n+1/2 avec n entier). Par exemple, le cercle défini par le carré (5,10),(20,25) a pour centre (12.5,17.5) et pour rayon 7.5.

1. Donner l'équation d'un cercle dont le centre et le rayon sont demi-entiers, en se ramenant au cas où le centre a pour coordonnées (1/2, 1/2). Indiquer les symétries du cercle qui peuvent être exploitées pour la rastérisation. Choisir une section particulière du cercle qui peut être utilisée pour tracer tout le cercle, par symétrie.

2. Donner un algorithme pour tracer la section du cercle choisie à la question 1, selon la technique du point médian en se limitant aux différences du premier ordre. Appliquer l'algorithme au tracé du cercle de centre (1/2, 1/2) et de rayon 3.5.

3. On considère maintenant des segments de droite dont les extrémités ont des coordonnées entières ou demi-entières. Identifier les différents cas possibles de tels segments en se limitant aux segments du premier octant. Montrer que l'on peut dessiner ces segments avec une version légèrement modifiée de l'algorithme de tracé de segment par la technique du point médian. Donner cette version modifiée pour les segments du premier octant.

Exercice B (6 points)

On utilise un système de gestion des entrées capable de fournir les événements suivants : Down (appui sur le bouton de la souris), Up (relachement du bouton de la souris), Move (déplacement de la souris), et TimeOut (écoulement d'un délai). Pour qu'un événement TimeOut soit émis, il faut amorcer un délai par l'action SetTimeOut(d), d étant un délai en millisecondes. L'événement est alors émis une et une seule fois à l'expiration du délai, soit d millisecondes plus tard. Si le délai est ré-amorcé avant d'avoir expiré, l'ancien délai est perdu. Le délai peut être désamorcé par ResetTimeOut(). S'il est désamorcé avant d'avoir expiré, l'événement TimeOut n'est pas émis.

1. Donner une machine à états qui appelle l'action Click() lorsqu'un simple click est détecté, et l'action DbleClick() lorsqu'un double click est détecté. Un double click est défini comme deux clicks dont les fronts descendants (appui sur le bouton) sont séparés par un délai inférieur à une valeur donnée DblClickTime. L'action Click() ne doit pas êre appelée lorsque le click est en fait le début d'un double click. Que se passe-t-il si l'on fait 3 clicks en succession rapide ?

2. Modifier cette machine pour que le double click ne soit détecté que si le déplacement de la souris entre les clicks est inférieur à une valeur donnée dmin.

3. Modifier la machine à états de la question 2 pour détecter des multi-clicks, c'est-à-dire des clicks successifs dont les fronts descendants sont séparés par un délai inférieur à DblCkickTime. L'action à appeler pour un click simple est toujours Click(). L'action à appeler pour un click multiple est MultiClick(n)n est le nombre de clicks (2 pour un double-click, 3 pour un triple-click, etc).

4. Donner une machine à états qui gère l'affichage de bulles d'aide. Lorsque la souris est sur un même objet pendant un certain temps (helpTime) sans avoir bougé de plus de dmin, une aide sur l'objet s'affiche (action DisplayHelp(obj,x,y)). L'aide disparait (action EraseHelp(obj)) lorsque la souris sort de l'objet.

Exercice C (6 points)

On désire ajouter à une scène 3D un caméra capable de suivre un point de la scène tout en se déplaçant. Dans tout l'exercice, on considère que le point visé fait partie du plan xOz du repère global R = (O, i, j, k). Etant donnés la position de la caméra C et le point visé P, on définit le repère orthonormé Rc = (C, ic, jc, kc) de la façon suivante (voir figure) :

* la droite définie par C, position de la caméra, et le vecteur kc passe par le point visé P ;

* le vecteur ic est parallèle au plan xOz du repère global R.

 

Au départ, la caméra est à l'origine, c'est-à-dire que les repères R et Rc sont confondus.

Déplacer la caméra signifie trouver la matrice de transformation en coordonnées homogènes qui amène le repère R sur le repère Rc, c'est-à-dire qui transforme O en C, i en ic, j en jc, k en kc. On note cette matrice MC,P.

Les matrices demandées dans la suite peuvent être exprimées sous forme de produit de matrices plus simples : il n'est pas nécessaire de développer tous les calculs.

1. Donner la matrice de transformation MC,P dans les trois cas suivants :

2. Soit Rc1 le repère correspondant à une position C de la caméra et un point visé P1. Soit P2 un nouveau point à viser et Rc2 le repère correspondant de la caméra (C ne change pas). Donner la matrice de transformation MC,P1->P2 permettant de déplacer la caméra de Rc1 à Rc2. En déduire la séquence de transformations permettant à la caméra de suivre un point P parcourant une trajectoire (Pi)i=1..n.

3. Soit Rc1 le repère correspondant à une position C1 de la caméra et un point visé P. Soit C2 une nouvelle position de la caméra et Rc2 le repère correspondant (le point visé P ne change pas). Donner la matrice de transformation MC1->C2,P permettant de passer de Rc1 à Rc2. En déduire la séquence de transformations permettant de déplacer la caméra selon une trajectoire (Ci)i=1..n.

4. On suppose maintenant que l'objet visé et la caméra se déplacent simultanément. De la même façon que dans les questions 2 et 3, donner la séquence de transformations permettant à la caméra de se déplacer selon une trajectoire (Ci)i=1..n en suivant un point P parcourant une trajectoire (Pi)i=1..n.

Note : on rappelle que si deux vecteurs u et v font un angle a, on a :

cos a = u.v / ||u||.||v||

sin a.k = u x v / ||u||.||v||

Question de cours (2 points)

1. Expliquer la différence entre projection perspective et projection parallèle. Laquelle se rapproche le plus de la vision humaine ?

2. Donner la définition d'un point de fuite et d'un point de fuite axial. Donner un exemple de projection avec deux points de fuite axiaux


Michel Beaudouin-Lafon