Salut !
Je suis en train de continuer mes tutos C++ sur mon site.
Actuellement, je fais des exemples sur l´utilisation de la physique dans un programme.
(dans mon tuto (cf ma carte), le §2.B a pour l´instant qu´un seul fichier : une balle en chute libre)
Pour cela, j´ai utilisé F = mA, en soumettant uniquement la balle a un champ de pesanteur F = P = mG, ce qui me permet d´ignorer le m.
Je gere donc tout ça avec un vecteur vitesse, une position, j´obtiens de belles simulations.
Le 2e tuto de ce paragraphe est presque pres, je n´ai plus qu´a le commenter : un rebond que je qualifierai de "bricolage" : c´est une fois que la balle est dans le sol que j´inverse le vy, ce qui est pas top.
Maintenant, je veux aller plus loin. J´ai déja commencé le 3e tuto la dessus. A chaque frame, je calcule le dt écoulé,
et je lance une évolution (en appliquant l´équation horraire) de parametre dt.
Or, si je detecte que cette évolution fera passer la balle a travers le sol, cela veut dire qu´il existe un st tel que 0 < st < dt tel que, pour une évolution de st, la balle soit pile sur le sol.
Je procede donc ainsi :
- calcul de st (une bete regle de 3)
- une Evolution de st -> apres cette évolution la, ma balle est pile sur le sol -> temps du rebond
- rebond
- Evolution de dt-st pour finir la frame.
Pour l´instant, je pars du principe que mon sol est bien droit (normale verticale).
Pour l´instant, mon rebond consiste juste a consiéder vy = -vy (vy est ma vitesse instantanée en y, apres évolution)
--> Cela me donne un bon résultat, mais ma balle rebondit sans atténuation.
Maintenant, je veux considérer une atténuation : je change donc, dans le rebond :
vy = -0.8*vy;
ça donne un beau truc, mais il y a quelque chose qui me gene : le vecteur vy ne tendra pas vers 0, (a cause de G qui lui donnra d´autres valeurs)
Du coup, finalement, ma balle "sautille" a la fin, et ne s´arrete jamais....
A mon avis, je compense mal l´apesanteur avec la réaction du support, ou il a quelque chose que je fais mal...
(lien temporaire pour illustrer)
http://perso.numericable.fr/~fvirtman/phys.zip