Infographie 2D - Projet

mer. 16 septembre 2009

Animation de flocons de neige

L'objectif de ce projet est de développer une petite application 2D simulant la chute de quelques flocons de neige, représentés schématiquement, à partir des notions vues en cours/TD et des modules écrits en TP.

Evaluation : il est impératif que vous suiviez à la lettre les consignes qui suivent. Ce projet doit être constitué de modules, comportant chacun le fichier des en-têtes, le(s) fichier(s) source(s) ainsi qu'un fichier de tests. Chaque fichier doit avoir un nom éloquent, et contenir le nom de son auteur. Le fichier des en-têtes comportera toute explication permettant de comprendre la fonction et la structure du module, il tiendra donc lieu de documentation du module. Par ailleurs, le fichier principal contiendra toutes les informations nécessaires à l'utilisation du programme final. Un "makefile" accompagnera le tout, indépendant de l'organisation des répertoires de son auteur. Les droits des fichiers seront choisis de tel sorte que les correcteurs puissent prendre connaissance de leur contenu. L'ensemble des fichiers sources, sans l'exécutable, sera rassemblé dans une archive de type "tar file". La non observation de ces consignes simples sera systématiquement sanctionnée par des malus cumulatifs appliqués à la note finale. La notation de ce projet prendra aussi en compte : le respect du cahier des charges, l'efficacité des fonctions graphiques, ainsi que la robustesse, la lisibilité et la modularité de votre code.


Cahier des charges

L'application simule la chute de quelques flocons de neige. Les flocons seront représentés schématiquement à l'aide de segments tracés grâce à l'algorithme de Bresenham (voir figures ci-dessous). La chute sera calculée le long d'une trajectoire qui doit avoir la forme d'une courbe de Bézier. Diverses options peuvent agrémenter le projet : couleurs multiples, rotation des flocons pendant leur chute, agrandissement / réduction des flocons simulant la distance les séparant de l'observateur, etc.

Au lancement du programme, celui-ci doit demander le nombre de flocons et leur vitesse de chute.

Représentation des flocons : vous avez le choix entre les deux modèles ci-dessous, que vous pouvez cumuler ou non.

flocon1 flocon2

Position initiale : à la première génération, chaque flocon doit avoir une position initiale en haut de l'écran mais à un instant défini aléatoirement. En effet, les flocons ne doivent pas tous atteindre le bas de l'écran en même temps pour des raisons à la fois esthétique et réaliste. Par la suite, les générations suivantes de chaque flocon conserveront l'aspect aléatoire de leur instant d'apparition, leur ordonnée correspondant toujours au haut de l'écran.

Trajectoire de chute : celle-ci doit suivre une courbe de Bézier comportant 4 points de contrôle dont le premier est bien entendu confondu avec le centre de masse de chaque flocon lors de son apparition en haut de l'écran. Le dernier point doit avoir une ordonnée confondue avec le bas de l'écran. Les positions des deux points intermédiaires doivent normalement être choisies aléatoirement de part et d'autre de la verticale du premier point (choisissez avec soin leur amplitude).

Couleurs : celles-ci doivent être choisies dans les tons froids (i.e bleu, vert, blanc), on ne veut pas représenter un feu d'artifice.

Rotation : celle-ci se fait autour du centre de masse de chaque flocon, il faut donc implanter la rotation d'un objet autour d'un point quelconque.

Agrandissement / réduction : ces deux opérations correspondent à l'application d'une homothétie de centre le centre de masse de chaque flocon, il faut donc implanter l'homothétie d'un objet par rapport à un point quelconque.


Implantation

Algorithmes : le tracé de segments de Bresenham ainsi que le tracé de courbes de Bézier doivent respecter les algorithmes étudiés en cours et TD. Toute solution toute faite trouvée sur le web sera sanctionnée de la note 0.