Examen de TD n°2 2004-2005

RETOUR

Jeudi 16 décembre 2004 - 1h25

Tous les documents sont autorisés.

On n'oubliera pas de fournir quelques explications sur les techniques employées.

Question 1: Animation de caméra en OpenGL

On considère une scène OpenGL quelconque modélisée par la fonction void scene(void);. Cette scène occupe un volume sphérique de rayon 100 centré sur l'origine du repère global.
De manière à mettre en évidence les déformations d'affichage liées aux techniques de mise en perspective, on souhaite programmer une animation interactive contrôlée au clavier où une caméra peut se déplacer entre les positions (1000.0, 0.0, 0.0) et (120.0, 0.0, 0.0). Le déplacement entre deux images est de 2.0. Au cours de ses déplacements, l'ouverture de la caméra est ajustée pour conserver la scène en gros plan dans la fenêtre d'affichage. Les touches de curseur "up" et "down" permettent d'avancer et de reculer la caméra.
Ecrire la fonction de gestion du clavier ainsi que les fonctions reshape et display permettant de programmer cette animation en C + OpenGL + GLUT.

Correction

Question 2: Courbes et surfaces paramétriques

a) Soit la courbe paramétrique cubique C(t) = (t3, t2, t, 1).M.G, t AppartientR.gif (883 octets).

Donner l'équation de la tangente à cette courbe.

b) Soit la surface paramétrique bicubique S(s,t) = (s3, s2, s, 1).M1.G.M2., s et t AppartientR.gif (883 octets).

Définir une méthode permettant de calculer la normale à cette surface.

Correction

Question 3: Calcul du rayon transmis

La formule de calcul du rayon transmis lors d'une réfraction est

FormuleTransmission.gif (912 octets)

où n est le rapport entre les indices de réfraction des milieux d'incidence et de transmission, est la normale à l'interface de transmission orientée dans le milieu d'incidence, est le rayon lumineux incident normé et est le rayon transmis.

Spécifier et écrire une fonction de calcul du rayon transmis.

Correction

Question 4: Modélisation d'une scène et gestion des lumières et des matériaux en OpenGL

On souhaite programmer une scène constituée de quatre sphères de rayon 4 situées aux sommets d'un tétraèdre régulier centré sur l'origine. Ce tétraèdre possède des cotés de longueur 10.

Ces quatre sphères sont munies de matériaux possédant les caractéristiques suivantes:

  • sphère n°1 : diffusion dans le rouge, réflexion spéculaire dans le blanc,
  • sphère n°2: diffusion dans le vert, pas de réflexion spéculaire,
  • sphère n°3: diffusion dans le bleu, réflexion spéculaire dans le magenta,
  • sphère n°4: diffusion dans le cyan, réflexion spéculaire dans jaune.

Cette scène est éclairée par une source lumineuse ponctuelle blanche en diffusion et en réflexion spéculaire placée à l'origine et par trois lumières directionnelles elles aussi blanches en diffusion et réflexion spéculaire et éclairant respectivement selon les directions x, y et -z.

Ecrire une fonction void scene(void); modélisant cette scène.

Correction

Rappel de quelques fonctions OpenGL ([] indique des fonctions à suffixe)

  • glClear(…): Effacement des tampons de dessin
  • glDisable(…): Désactivation d'une caractéristique OpenGL
  • glEnable(…): Activation d'une caractéristique OpenGL
  • glFrustum(…): Définition d'une transformation de mise en perspective
  • glLight[](…): Définition d'une lumière
  • glMaterial[](…): Définition d'un matériel
  • glMatrixMode(…): Choix de la transformation géométrique courante
  • glPopMatrix(…): Dépilement de la transformation géométrique courante
  • glPushMatrix(…): Empilement de la transformation géométrique courante
  • glRotate[](…): Définition d'une rotation
  • glScale[](…): Définition d'un zoom
  • glTranslate[](…): Définition d'une translation
  • gluLookAt(…): Définition d'un point de vue pour une visualisation
  • gluPerspective(…): Définition d'une transformation de mise en perspective

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