École de technologie supérieure
Génie de la production automatisée
GPA665
Structures de données et algorithmes
Laboratoire 3
Animation d’un arbre
Responsable du cours : Mohamed Cheriet, ing., Ph. D.
Rédaction du laboratoire : Jean-Christophe Demers
Révision et barème de correction : Yan Levasseur & Mathieu Binette
Temps alloué pour ce laboratoire : 4 périodes de laboratoire
Résumé
Les animations graphiques d’une certaine complexité se doivent d’être gérées par un
système qui en automatise la réalisation. 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 à l’effet du vent.
Ce laboratoire offre à l’étudiant de concevoir lui-même la structure de données qu’il désire
utiliser (à quelques contraintes près). 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 associés au Type de Données Abstrait arbre.
De plus, comme à chacun des laboratoires, il est nécessaire d’adopter une méthode de
programmation rigoureuse afin d’atteindre les objectifs fondamentaux de qualité logicielle.
GPA665 STRUCTURES DE DONNEES ET ALGORITHMES ÉTE 2004
LABORATOIRE 3 2 / 7
Énoncé du problème
Les techniques actuelles d’infographie permettent de créer des images de synthèse
incroyablement réalistes. Cependant, on remarque qu’il devient très difficile de garder le
même niveau de réalisme pour les images présentant des phénomènes associés aux
géométries fractales ou les images sur lesquelles on retrouve un nombre incalculable de
composants (par exemple un carré de sable, des cheveux, des arbres ou même un
brocoli!).
Ce troisième laboratoire vous demandera d’animer 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ôt les structures de données qui peuvent être utilisées pour ce type
d’animation.
Définition de la tâche
Vous devez créer un petit programme qui s’exécute 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 critères 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 désire avoir pour l’arbre et l’animation.
Critères sur l’arbre
L’arbre que vous générez doit être de type naire dont le niveau maximum est déterminé 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 aléatoire 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 l’animation
L’animation que vous géné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éformé selon sa position
dans le temps. L’amplitude de la dé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émité de l’arbre sont
plus petites, donc plus facile à être déformés par les vents. De plus, le point d’attache de
chacune des branches est toujours relative à la branche parent (tout en considérant les
déformations de cette dernière).
On simplifie le travail en considérant 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 qu’une branche
orientée 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 données de type arbre et la libérer
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 référence, voici la
fonction qui a été utilisée pour géné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 d’habitude, vous devez produire un rapport comprenant un
organigramme général du dé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 à répondre par écrit.
2. Vous aurez à faire une brève présentation orale au chargé de laboratoire. Cette
présentation 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 à ré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 période des examens finaux. Lors des deux dernières
périodes de laboratoire, une feuille circulera vous permettant de réserver un bloc horaire.
C’est votre responsabilité de vous présenter à cette évaluation.
1 / 7 100%