École de technologie supérieure
Génie de la production automatisée
GPA665
Structures de données et algorithmes
Laboratoire 3
Animation dun arbre
Responsable du cours : Mohamed Cheriet, ing., Ph. D.
Rédaction du laboratoire : Jean-Christophe Demers
Révision et bame de correction : Yan Levasseur & Mathieu Binette
Temps alloué pour ce laboratoire : 4 périodes de laboratoire
Résumé
Les animations graphiques dune certaine complexité se doivent d’être gérées par un
système qui en automatise laalisation. Ce laboratoire permet, avec l’aide du laboratoire
2 (Génération d’une animation graphique par un script), de créer une animation
représentant un arbre qui est soumis à leffet du vent.
Ce laboratoire offre à l’étudiant de concevoir lui-même la structure de données qu’il désire
utiliser quelques contraintes ps). Dans un premier temps, ce laboratoire vous
donnera l’occasion d’analyser un problème concret et ensuite de concevoir et développer
les services assocs au Type de Dones Abstrait arbre.
De plus, comme à chacun des laboratoires, il est cessaire d’adopter une méthode de
programmation rigoureuse afin d’atteindre les objectifs fondamentaux de quali logicielle.
GPA665 STRUCTURES DE DONNEES ET ALGORITHMES ÉTE 2004
LABORATOIRE 3 2 / 7
Énoncé du problème
Les techniques actuelles d’infographie permettent de cer des images de synthèse
incroyablement alistes. Cependant, on remarque qu’il devient ts difficile de garder le
me niveau de réalisme pour les images présentant des pnomènes assocs aux
géométries fractales ou les images sur lesquelles on retrouve un nombre incalculable de
composants (par exemple un car de sable, des cheveux, des arbres ou me un
brocoli!).
Ce troisième laboratoire vous demandera danimer graphiquement le squelette d’un arbre
qui est soumit à de forts vents. Évidemment, ce n’est pas les concepts d’infographies qui
sont à étudier mais plut les structures de dones qui peuvent être utilisées pour ce type
danimation.
Définition de la tâche
Vous devez créer un petit programme qui s’ecute en mode console (fenêtre texte) et qui
crée un fichier de type *.SFA (voir le laboratoire 2 pour la description du format de fichier)
dans lequel on retrouve une animation d’un arbre soumit à de forts vents.
Votre programme doit respecter les crires associés à l’arbre et à l’animation qui sont
décrits dans les deux sections suivantes. De plus, votre programme doit demander à
l’usager la valeur des paramètres qu’il sire avoir pour l’arbre et l’animation.
Critères sur larbre
Larbre que vous nérez doit être de type naire dont le niveau maximum esttermi par
deux critères : soit le nombre de niveaux (déterminé par l’usager) ou la longueur d’un
segment (lorsque la longueur d’une branche est inférieure ou égale à 3).
Un nombre aatoire déterminera le nombre de branches enfants pour chaque branche
parent. Ce nombre doit tout de même être borné à un minimum de 2 et à une valeur
maximum définit par l’usager.
La dispersion de chaque groupe de n branches pour chaque nouveaux noeuds doit être
symétrique. C'est-dire que les branches de chaque noeuds doivent être distantes d’une
valeur égale.
Voici quelques exemples d’arbres valides :
GPA665 STRUCTURES DE DONNEES ET ALGORITHMES ÉTE 2004
LABORATOIRE 3 3 / 7
Niveau maximum : 5
Nombre de
branches : 2 7
Longueur d’une
branche par rapport à
un parent : 0.75
Niveau maximum : 6
Nombre de
branches : 2 3
Longueur d’une
branche par rapport à
un parent : 0.75
Niveau maximum : 5
Nombre de
branches : 2 5
Longueur d’une
branche par rapport à
un parent : 0.75
GPA665 STRUCTURES DE DONNEES ET ALGORITHMES ÉTE 2004
LABORATOIRE 3 4 / 7
Niveau maximum : 4
Nombre de
branches : 2 12
Longueur d’une
branche par rapport à
un parent : 0.9
Critères sur lanimation
Lanimation que vous rez est une pseudo-simulation d’une déformation d’un arbre
soumit à un vent dont l’amplitude varie dans le temps.
Pour chaque séquence d’animation, on retrouve l’arbre qui est défor selon sa position
dans le temps. L’amplitude de la formation est directement proportionnelle à l’amplitude
du vent et au niveau de l’arbre. Par exemple, le tronc qui se trouve à la base de l’arbre ne
varie presque pas en comparaison aux dernières branches qui elles, varient
considérablement. Ce qui veut dire que les branches situées à l’extrémi de l’arbre sont
plus petites, donc plus facile à être défors par les vents. De plus, le point d’attache de
chacune des branches est toujours relative à la branche parent (tout en consirant les
déformations de cette dernière).
On simplifie le travail en consirant que le vent est toujours horizontal mais qu’il peut
varier en amplitude et en direction. Ainsi, pour la déformation de l’arbre, vous devez aussi
considérer la direction du vent en fonction de l’orientation de chacune des branches. Ce
qui veut dire q’une branche orientée verticalement variera énormément et quune branche
oriene horizontalement ne variera aucunement.
Finalement, vous devez tracer, sous votre arbre une courbe montrant l’amplitude du vent
pour toute l’animation et un pointeur indiquant la position courante dans l’animation.
Contraintes
Voici les contraintes du laboratoire :
vous devez utiliser le langage de programmation C ou C++;
vous ne devez utiliser aucune variable globale;
vous devez allouer une structure de dones de type arbre et la lirer
convenablement.
GPA665 STRUCTURES DE DONNEES ET ALGORITHMES ÉTE 2004
LABORATOIRE 3 5 / 7
Exemples disponibles
Vous trouverez sur le site web du cours quelques exemples. À titre de rence, voici la
fonction qui a été utilie pour gérer la courbe du vent pour chacune de ces exemples :
 
xxxf 2
3
cos
2
1
2
5
sin
2
1
Fonction intéressante
-1
-0.5
0
0.5
1
1.5
0
0.4
0.8
1.2
1.6
2
2.4
2.8
3.2
3.6
4
4.4
4.8
5.2
5.6
6
6.4
Temps
Figure 1 : Exemples de courbe utilisée pour représenter le vent
Évaluation
Lévaluation de ce laboratoire sera différente des deux laboratoires précédents et
permettra à l’évaluateur de faire une évaluation interactive. L’évaluation sera en trois
parties :
1. Comme dhabitude, vous devez produire un rapport comprenant un
organigramme géral du roulement de votre programme (1 page). Vous
devez aussi remplir la grille d’évaluation. Par contre, notez qu’il n’y aura pas de
questions à pondre par écrit.
2. Vous aurez à faire une brève présentation orale au chargé de laboratoire. Cette
psentation d’une dizaine minutes vous donnera la chance d’expliquer en détail
les éléments importants du laboratoire. Par exemple, vous pouvez expliquer
votre approche globale, les difficultés que vous avez eues et les solutions que
vous avez trouvées.
3. Finalement, vous aurez à pondre aux questions de l’évaluateur (environ 10
minutes également). Ces questions permettront de bien cerner votre niveau de
compréhension.
Lévaluation se fera pendant la semaine d’examen. La date exacte n’est pas déterminée
mais l’évaluation sera pendant la riode des examens finaux. Lors des deux dernres
périodes de laboratoire, une feuille circulera vous permettant de server un bloc horaire.
C’est votre responsabilité de vous présenter à cette évaluation.
1 / 7 100%