Animation par mod`eles physiques

Transcription

Animation par mod`eles physiques
Animation par modèles physiques
Résumé
Le but de ce TP est de découvrir les modèles physiques, en particulier les ressorts et les
collisions. On voit aussi une manière d’interagir directement avec ces modèles.
1
Prise en main et compréhension
Chargez et décompressez prog.tgz. Compilez, et exécutez le programme main. Lisez l’aide
(option -h).
Le programme représente une boule qui se translate suivant sa vitesse initiale. Il y a aussi
une boule fixe, dont on ne s’occupe pas dans un premier temps.
Question 1 Diverses valeurs peuvent être luees en ligne de commande (vérifiez avec l’option
-h). En examinant comment ces options sont déclarées dans le programme, ajoutez la possibilité
de spécifier en ligne de commande la vitesse initiale de la boule. Expliquez les modifications
nécessaires.
2
Schéma d’intégration
La pesanteur est prise en compte dans le programme (le poids est pris en compte dans la
somme des forces) et pourtant la vitesse de la boule reste constante.
Question 2 Complétez le schéma d’intégration en mettant à jour la vitesse en fonction des
accélérations. Expliquez les modifications nécessaires.
Question 3 La boule fixe est un objet dynamique au même titre que la boule mobile. En analysant le programme, expliquez pourquoi elle est fixe.
3
Ressorts
Ajoutez un ressort entre la boule fixe et la boule mobile à l’aide de la méthode ajouteRessort.
Question 4 Ecrivez la modification nécessaire.
Ceci fait, modélisez une chaı̂ne de boules accrochée en une extrémité à la boule fixe, et
paramétrable en ligne de commande par :
– nombre de boules
– masse des boules (toutes identiques)
– rayon des boules
– raideur des ressorts
– longueur au repos des ressorts (tous identiques)
– amortissement des ressorts
4
Interaction avec l’utilisateur
En adaptant la méthode myMouseMoveCB, donnez à l’utilisateur la possibilité de déplacer
la boule fixe à l’aide de la souris. Vous pourrez utiliser la méthode setPositionBoule pour
déplacer la boule fixe.
1
5
Amortissement visqueux
Afin de dissiper les vitesses, modélisez une force agissant sur chaque boule, proportionnelle
et opposée à la vitesse : f = −νv, où f et v sont des vecteurs et ν un coefficient de dissipation
réglable en ligne de commande.
Question 5 Visuellement, quelle est la différence d’effet entre le coefficient de dissipation qu’on
vient d’introduire et le coefficient d’amortissement des ressorts ?
6
Collisions
6.1
Boule-plan
Décommentez les lignes nécessaires pour traiter les collisions entre les boules et le sol.
Expérimentez en modélisant une boule unique en chute libre, avec différents coefficients de
rebond.
6.2
Boule-boule
En vous inspirant très fortement de l’implémentation boule-plan, traitez la collision bouleboule dont la méthode (vide) est fournie.
Question 6 Quelles sont les modifications à apporter ? Appuyez-vous sur une figure pour concevoir et expliquer la modification.
Expérimentez sur une scène comportant deux boules, et vérifiez le réalisme par quelques
tests utilisant différentes masses et différents coefficients de rebond.
Question 7 Décrivez les tests effectués (valeurs numériques, résultats, conclusion)
6.3
Propagation
On s’intéresse maintenant à un ensemble de boules. Implémentez (si ce n’est pas déjà fait)
le traitement de toutes les paires de boules (toutes les collisions possibles).
Testez votre programme de la manière suivante :
1. en ligne de commande, vous réglerez la gravité à zéro, et le coefficient de rebond à 1 ;
2. modélisez n boules immobiles cote à cote, alignées, tangentes ;
3. modélisez une boule qui vient frapper l’une des extrémités de la rangée de boules immobiles,
avec une vitesse colinéaire à la rangée de boules ;
4. vérifiez si comme dans la réalité ”parfaite”, la boule ”frappante” s’immobilise et communique intégralement son mouvement à la boule opposée.
Question 8 Les boules se comportent-elles exactement de la même manière (au signe près) si
la boule ”frappante” arrive par l’autre côté ? Si oui justifiez, sinon expliquez la différence.
Question 9 Ecrivez en pseudocode les boucles de traitement des collisions qui permettent d’obtenir le même comportement (au signe près) quel que soit le côté d’où arrive la boule frappante.
2

Documents pareils