Laboratoire 3

publicité
É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 :
Rédaction du laboratoire :
Révision et barème de correction :
Temps alloué pour ce laboratoire :
Mohamed Cheriet, ing., Ph. D.
Jean-Christophe Demers
Yan Levasseur & Mathieu Binette
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.
É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
aire
L’arbre que vous générez doit être de type n 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
LABORATOIRE 3
STRUCTURES DE DONNEES ET ALGORITHMES
ÉTE 2004
2/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
LABORATOIRE 3
STRUCTURES DE DONNEES ET ALGORITHMES
ÉTE 2004
3/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 :
GPA665
LABORATOIRE 3

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.
STRUCTURES DE DONNEES ET ALGORITHMES
ÉTE 2004
4/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 :
1
5  1
3

f x    sin  x    cos  x   
2
2  2
2

1.5
1
0.5
0
-0.5
4
6
5.
6.
2
5.
6
8
4.
6
3.
4
2
3.
4
8
4.
4
6
1.
2.
2
1.
2
8
0.
2.
4
0.
-1
0
Amplitude du vent
Fonction intéressante
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.
GPA665
LABORATOIRE 3
STRUCTURES DE DONNEES ET ALGORITHMES
ÉTE 2004
5/7
À titre indicatif, voici des exemples de questions qui pourraient vous être posées :

Quelle est la pertinence de la structure de données choisie dans ce laboratoire ?
Est-ce que cette représentation des données est supérieure à un autre choix de
TDA ? Quels sont les avantages et les inconvénients du TDA choisi par rapport à
un autre TDA (de votre choix) ?

Comment pourrait-on modifier la structure de données que vous avez définie afin
de permettre l’addition de feuilles, de fruits ou d’autres éléments qui apparaissent
aléatoirement aux dernières branches de l’arbre ?

Chez un arbre réel, il est possible que des branches seules ou des groupes de
branches apparaissent après une longueur constante sur un tronc, ou
simplement à des longueurs plus ou moins aléatoires. Nous voulons permettre
que des branches sortent d’un nœud qui se trouverait au milieu (et non pas à
l’extrémité) d’une branche. Expliquez comment cela est réalisable par une
modification de votre structure de données.
La remise se fait par un fichier ZIP correspondant aux éléments suivants :

Le dossier principal de votre projet Visual C++ incluant tous ses dépendants
(sauf les librairies principales du C/C++). N’oubliez pas de bien documenter
votre code source.

Une version exécutable de votre programme.

Un PDF de votre rapport.

Le fichier doit être nommé : GPA665_LAB3_AnimArbre_VotreNom.ZIP
Le tout doit être remis par courriel au chargé de laboratoire avant la date prescrite.
GPA665
LABORATOIRE 3
STRUCTURES DE DONNEES ET ALGORITHMES
ÉTE 2004
6/7
Grille d’évaluation
En guise d’autoévaluation, imprimez et remplissez vous-même cette section. Mentionnez
une référence (nom de fichier et numéro de ligne) lorsque demandé pour faciliter la
vérification par le correcteur.
Spécifications techniques
Oui
Non
Référence (fichier, ligne)
5
Modélisation complète de l’effet du vent
sur l’arbre, intégration avec le lab. 2
5
Influence de la force du vent sur
l’amplitude de la déformation
5
Influence du niveau de la branche sur la
déformation due au vent
_____________________
5
Influence de l’orientation de la branche sur
la déformation due au vent
_____________________
5
Modélisation et affichage d’un vent
horizontal variable
_____________________
5
Modélisation réaliste, correcte et fluide
Spécifications de programmation
_____________________
Oui
Non
5
Structures de données, TDA arbre
_____________________
5
Gestion dynamique de la mémoire et
libération de l’espace alloué
_____________________
(-10)
Aucune variable globale
Qualité logicielle
T.B.
Bon
Pauvre
Référence (fichier, ligne)
5
Modularité : usage généralisé de fonctions
et regroupement logique en modules
_____________________
5
Robustesse : Précaution pour éviter les
problèmes de données erronées, etc.
_____________________
5
Documentation : Commentaires pertinents
qui accélèrent la compréhension du code
_____________________
5
Clarté du code : Code concis et court
utilisant les fonctions adaptées
_____________________
60
TOTAL
_____________________
_____________________
_____________________
_____________________
Section réservée au correcteur :
GPA665
LABORATOIRE 3
/ 10
Organigramme
/ 30
Réponses aux questions
/ 60
Respect des spécifications
/ 100
Total
STRUCTURES DE DONNEES ET ALGORITHMES
ÉTE 2004
7/7
Téléchargement