Sujets et Corrections |
||||||||||||||||||||||||||||||||||||||||||||||||
TD n°1 TD n°2 TD n°3 TD n°4 TD n°5: TD n°6: TD n°7: TD n°8: TD n°9:
TP n°1 TP n°2 TP n°4: TP n°5: TP n°6: TP n°7:
Dernière modification |
TD n°1: Création de scènes VRML 1.0 Exercice n°1 (1) Programmer en VRML la scène suivante sans utiliser le nud Separator ailleurs que pour le Separator d'encadrement global du fichier: Quatre cubes de coté de longueur 1.0 aux positions (2.0,0.0,2.0), (2.0,0.0,-2.0), (-2.0,0.0,2.0) et (-2.0,0.0,-2.0). (2) Reprogrammer en VRML la scène précédante en utilisant le nud Separator pour rendre les objets indépendants les uns des autres. (3) Reprogrammer en VRML la scène précédante en apportant les modifications suivantes:
Exercice n°2 Programmer la scène modélisant un bras robot composé d'un avant-bras,
d'un bras, et d'une paire de pinces.
TD n°2: Création de scènes OpenGL Exercice n°1 Soit la scène composée de n cubes de cotés 1 centrés sur les sommets d'un polygone régulier de rayon 3 lui-même centré sur O et plongé dans le plan xOy. Les cubes doivent présenter une face directement orientée vers O. Réaliser l'implantation OpenGL de cette scène. Exercice n°2 Soit la scène composée de huit cubes de cotés 1 centrés sur les
sommets d'un cube de rayon 4 lui-même centré sur O, et de 12 cylindres de rayon 0.25 et
de longueur 3.0 joignant ces 8 sommets entre eux pour matérialiser les arêtes du cube de
coté 4. Fichiers sources pour dessiner des cylindres TD n°3: Les primitives graphiques en OpenGL Exercice 1 a) Ecrire une fonction de modélisation d'une boite cubique de dimension c centrée sur l'origine du repère. Cette fonction devra seulement assurer la création des facettes (cubes rouges sur l'image proposée). b) Modifier la fonction précédente pour y inclure la gestion des normales aux facettes (utilisées pour les calculs d'éclairages) (cubes bleu et vert sur l'image proposée). Exercice 2 a) Ecrire une fonction de modélisation d'un cylindre de rayon r, de hauteur h, possédant n sections radiales, centré sur l'origine et d'axe y. Cette fonction devra seulement assurer la création des facettes (cylindres bruns sur l'image proposée). b) Modifier la fonction précédente pour y inclure la gestion des normales aux facettes (utilisées pour les calculs d'éclairages) (cylindres avec dégradé sur l'image proposée). TD n°4: Programmation d'animations Exercice 1 a) Programmer l'animation d'une sphère de rayon 1 selon une trajectoire circulaire de rayon 3 centrée sur l'origine du repère et définie dans le plan xOy. Cette animation est réalisée à raison de 0.5° de rotation entre chaque image. b) Modifier le programme précédent de telle manière que la sphère réalise un mouvement de va et vient cyclique de façon que revenue à sa position de départ, elle reparte en marche arrière. c) Modifier le programme précédent de telle manière que la touche Enter du clavier soit utilisable pour activer/désactiver l'animation. En cas de réactivation, l'animation repart là où elle avait été interrompue. Exercice 2 Programmer un mouvement hélicoïdal. Les paramètres sont les suivants:
Exercice 3 Programmer une animation où deux sphères de rayon 1, suspendues à deux cylindres de
longueur 10 et de rayon 0.25 matérialisant des fils, s'entrechoquent l'une l'autre de
manière cyclique. Exercice 4 On souhaite programmer une scène animée en OpenGL. Cette scène représente, avec élimination des parties cachées, une sphère de rayon 1, de position initiale (0.0,10.0,0.0) tombant balistiquement selon l'axe -Oy pour rebondir centrée au point (0.0,0.0,0.0), revenir se placer en position initiale et s'immobiliser.
TD n°5: Les lumières et matériaux en VRML Gestion en VRML des matériaux et des lumières Exercice 1 a) Ecrire une scène composée d'une sphère de rayon 5 centrée sur l'origine du repère et affectée d'un matériel avec uniquement de la diffusion dans le rouge. b) Modifier la scène précédente pour que le matériel intègre une réflexion spéculaire dans le vert. c) Modifier la scène précédente pour y intégrer un éclairage sous la forme d'une source lumineuse directionnelle blanche éclairant depuis la droite. d) Modifier la scène précédente pour y inclure une seconde sphère de rayon 2 placée en position (10, 0, 0) possédant le même matériel que la première ainsi qu'une seconde source lumineuse ponctuelle blanche placée à l'origine. e) Modifier la scène précédente pour y inclure une source lumineuse spot placée en position (0, 0, 10) orientée vers l'origine et éclairant partiellement la grosse sphère. Solutions
Exercice 2 Soient deux sphères de rayon 1, placées en position (5, 0, 0) et (-5, 0, 0) et blanches en diffusion. Soient deux sources lumineuses ponctuelles placées à l'origine du repère et émettant dans le vert et dans le bleu. Construire la scène de telle manière que la sphère de droite soit éclairée uniquement par la lumière verte, et la sphère de gauche uniquement par la lumière bleue. Modifier le matériau des deux sphères pour les rendre transparentes. Solution
TD n°6: Quelques bases mathématiques de l'infographie 1) Définir une structure de données permettant de stocker une position dans un espace à 3 dimensions. 2) Définir une structure de données permettant de stocker une direction dans un espace à 3 dimensions. 3) Ecrire une fonction de calcul de la direction définie entre deux positions. 4) Ecrire une fonction calculant la norme d'une direction. 5) Ecrire une fonction de normalisation d'une direction. 6) Ecrire une fonction calculant le produit scalaire de deux directions. 7) Ecrire une fonction calculant le produit vectoriel de deux directions. 8) Définir une structure de données permettant de stocker une facette triangulaire d'un espace à 3 dimensions. 9) Ecrire une fonction calculant l'une des deux normales à une facette triangulaire. 10) Ecrire une fonction testant le parallélisme entre deux facettes triangulaires. 11) Définir une structure de données permettant de stocker une facette d'arité quelconque d'un espace à 3 dimensions. 12) Ecrire une fonction testant la planarité d'une facette d'arité quelconque. 13) Ecrire une fonction testant la convexité d'une facette plane d'arité quelconque. Solution TD n°7: Le placage de texture en VRML et en OpenGL Le placage de texture Exercice 1 : VRML Définir le champ image d'un noeud Texture2 permettant la création d'une texture de 2x2 pixels rouge, vert pour la ligne du haut et bleu et jaune pour la ligne du bas. Exercice 2 : OpenGL a) Définir une fonction créant un tableau à même d'être utilisé dans un appel à glTexImage2D pour spécifier une texture identique à celle de l'exercice 1. b) Reprendre la question précédente pour créer une bitmap en damier de 8 sur 8 pixels alternativement blanc et noir. Solution TD n°8: Le remplissage de cercles et de triangles 2D Exercice 1 a) Implanter l'algorithme du midpoint (Bresenham) pour le dessin de cercles sur écran raster. On implantera une version simplifiée dessinant des cercles centrés sur l'origine. b) Ecrire une fonction permettant de tracer le segment horizontal de pixels allant du pixel (-x,y) au pixel (x,y). c) A partir des fonctions des questions a et b, implanter un algorithme de remplissage de cercles. Exercice 2 a) On cherche à déterminer les pixels des bords d'une facette triangulaire définie
dans un espace 2D. Ecrire une fonction permettant de remplir un tableau indicé sur y,
pour tous les y où un segment 2D rectiligne est présent, avec l'abscice d'un des pixels
présent en cet y. b) Ecrire une fonction permettant de tracer le segment horizontal de pixels allant du pixel (xi,y) au pixel (xf,y). c) En utilisant les fonctions des questions a et b, écrire une fonction de remplissage
d'une facette triangulaire définie dans un espace 2D. Solution TD n°9: Programmation de classes de gestion des coordonnées homogènes Le TD est réalisé en java ou en C++. a) Programmer une classe coordonnées homogènes d'un espace 3D. b) Programmer une classe position dans un espace 3D. c) Programmer une classe direction dans un espace 3D. d) Programmer une classe transformation géométrique en coordonnées homogènes d'un espace 3D. e) Programmer une classe translation dans un espace 3D. f) Programmer une classe rotation autour d'un axe arbitraire passant par l'origine. g) Intégrer à la hiérarchie de classe définie aux questions précédentes une méthode permettant d'appliquer une transformation géométrique à une position ou une direction. h) Intégrer à la hiérarchie de classe une méthode permettant de composer des transformations géométriques. Solution TP n°1: Prise en mains d'un environnement de programmation VRML Les viewers disponibles sont:
Travail demandé:
TP n°2: Prise en mains d'un environnement de programmation OpenGL
Fichiers sources pour dessiner des cylindres TP n°3: GLUT Exercice 1 Programmez une application OpenGL affichant une petite sphère dans une fenêtre et permettant à l'utilisateur de cliquer au moyen de la souris pour déplacer cette sphère à l'endroit où le clic a eu lieu. Exercice 2 Programmez une application OpenGL affichant une petite sphère dans une fenêtre et permettant à l'utilisateur de glisser déplacer (drag and drop) cette sphère au moyen de la souris. Exercice 3 Programmez une application OpenGL affichant une petite sphère dans une fenêtre et permettant à l'utilisateur de cliquer au moyen de la souris pour déclencher une animation amenant la sphère de sa position originelle à la position cliquée. Le déplacement est rectiligne à raison de deux pixels entre images successives. Quand la position destination est atteinte, l'animation s'arrête.
Exercice 4 Programmez une animation où une sphère de rayon 1 et un cube de coté 2
sont séparés d'une distance égale à 3 tournent l'un autour de l'autre (autour du point
médian entre eux). TP n°4: Gestion des caméras en OpenGL Programmez une animation où deux objets (une sphère de rayon 1 et un
cube de coté 2) sont séparés d'une distance égale à 3 et tournent l'un autour de
l'autre à raison de 1° de rotation entre chaque image. L'animation est réalisée dans
le plan xOy. Elle s'effectue autour du point médian entre les deux objets lui-même
placé à l'origine. a) Progammez cette scène pour qu'elle soit visualisée en projection paralléle orthographique avec une ouvertue verticale de 6 et que le ratio de la fenêtre soit identique au ratio de la caméra de visualisation. b) Progammez cette scène pour qu'elle soit visualisée en gros plan en projection en perspective depuis le point de coordonnées (0.0, 0.0, 100.0) et que le ratio de la fenêtre soit identique au ratio de la caméra de visualisation. c) Progammez cette scène pour qu'elle soit visualisée en gros plan en projection en perspective depuis le point de coordonnées (0.0, 0.0, 5.0) et que le ratio de la fenêtre soit identique au ratio de la caméra de visualisation. d) Progammez cette scène pour qu'elle soit visualisée en gros plan en projection en perspective depuis le point de coordonnées (5.0, 5.0, 5.0) et que le ratio de la fenêtre soit identique au ratio de la caméra de visualisation.
e) Modifiez la programmation réalisée pour pouvoir utiliser la touche return pour switcher entre les modes de visualisation des questions a, b, c et d. TP n°5: Les matériaux et lumières en OpenGL Gestion en OpenGL des matériaux et des lumières Implanter en OpenGL les exercices du TD n°5.
TP n°6: Mathématiques pour les calculs d'éclairage Le but du TP est l'implantation des calculs mathématiques nécessaires à la réalisation d'un calcul d'ombrage sur une facette diffusante éclairée par une source lumineuse ponctuelle. a) Définir les structures C (ou les classes C++) permettant de représenter les
données suivantes: b) Ecrire et tester les fonctions réalisant les opérations suivantes: c) Ecrire et tester une fonction calculant l'énergie lumineuse colorée Ip reçue en
une position depuis une source lumineuse (énergie proportionnelle à la quantité
d'énergie émise et inversement proportionnelle au carré de la distance entre la source
lumineuse et le point considéré). d) Ecrire et tester une fonction de calcul de l'énergie lumineuse colorée diffusée (formule de Lambert, L = Ip Kd (.)) en un point d'une surface. e) Utiliser la fonction de la question (d) pour réaliser le calcul d'éclairage par
diffusion des trois sommets d'une facette triangulaire munie d'un matériel sous une
source lumineuse ponctuelle colorée. Solutions TP n°7: Le clipping par l'algorithme de Cohen-Sutherland On souhaite implanter l'algorithme de Cohen-Sutherland pour le clipping (découpage) de segments de droite à l'intérieur de rectangles. a) Définir une structure (ou classe) position d'un espace à deux dimensions. b) Définir une structure (ou classe) segment de droite d'un espace à deux dimensions. c) Définir une structure (ou classe) rectangle d'un espace à deux dimensions. d) Définir une structure (ou classe) code utilisable pour le codage d'une position vis à vis d'un rectangle dans le cadre de l'implantation de l'algorithme de Cohen-Sutherland. e) Implanter les fonctions (ou méthodes) de gestion de code utilisées pour l'implantation de l'algorithme de Cohen-Sutherland:
f) Implanter une fonction (ou méthode) permettant de calculer la position de l'intersection entre la droite soutendue par un segment et une droite horizontale d'ordonnée y. g) Implanter une fonction (ou méthode) permettant de calculer la position de l'intersection entre la droite soutendue par un segment et une droite verticale d'abscisse x. h) Implanter et tester l'algorithme de Cohen-Sutherland. |