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 .
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 .
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

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
|