Exercice 1 : Programmation OpenGLCet exercice a pour but la
modélisation et l'utilisation OpenGL de roues dentées.
- Ecrire une fonction modélisant une roue dentée. Les paramètres de
génération sont l'épaisseur, le rayon intérieur, le rayon extérieur et le nombre de
dents (voir images). La fonction doit générer les coordonnées et les normales pour
autoriser les calculs d'ombrage.
Une roue dentée de 54 dents, d'épaisseur = 1,
de rayon intérieur = 6.5 et de rayon extérieur = 7.5 (hauteur des dents = 1)
- Ecrire les fonctions display et idle réalisant l'animation d'une scène
où une petite roue dentée de paramètres (2.0, 2.5, 3.5, 18) entraîne une grande roue
de paramètres (1.0, 5.5, 6.5, 36) (voir image). Les deux roues tournent autour de l'axe z
dans le plan xOy. Le matériau de la petite roue diffuse dans le vert. Celui de la grande
roue diffuse dans le rouge. La petite roue tourne à raison de 1° entre chaque image.
Correction
Question 2
- En quoi consiste la "spécification des coordonnées de
texture" pour la réalisation d'un plaçage de texture?
- Quelle est la fonction OpenGL permettant la spécification des
coordonnées de texture?
- On considère une surface paramétrique bicubique. Indiquez comment vous
définiriez les coordonnées de texture pour texturer cette surface.
Correction
Question 3
On souhaite programmer une animation où une caméra
décrit une trajectoire pour se déplacer à l'intérieur d'une scène qui elle ne change
pas. La trajectoire est une courbe paramétrique cubique définie par 4 sommets dans un
espace à 3 dimensions. La caméra se déplace uniformément sur la trajectoire et la
parcourt du début à la fin en un nombre n d'images. La caméra "regarde" dans
la direction tangente à la trajectoire.
- Spécifier et écrire une fonction position permettant de calculer
la position de la caméra sur la trajectoire à l'image ni (0 <= ni < n).
- Spécifier et écrire une fonction tangente permettant de calculer la
direction tangente à la trajectoire à l'image ni (0 <= ni < n).
- Ecrire la fonction void reshape(int x, int y) définissant la caméra
selon les paramètres suivants : p/5 radians d'ouverture verticale, ratio égal à celui
de la fenêtre de visualisation, plans de découpage à une distance de 0.5 et 50.0.
- La scène est dessinée par une fonction void scene(void) considérée
comme existante. Ecrire la fonction void display(void) dessinant une image de l'animation.
Correction |