Bonjour à tous,
je cherche à faire une partie d'un moteur physique (ce n'est pas le premier) mais j'ai un problème !
Je vais prendre un exemple tout simple en 2D, une balle est lachée sans vitesse initial sur un plan non incliné horizontal, les 2 objets possede un coefficient de rebond qui leur permet de ne perdre aucune énergie, c'est à dire que quand la balle touche le plan elle doit rebondir avec l'opposé de sa vitesse V2=-V1 et donc mont but est qu'apres le rebond la balle remonte jusqu'à sa position initial EXACTEMENT !
Dis comme sa on ne voit pas la difficulté il suffit d'inverser la vitesse. Mais la ou sa se corse c'est bien sur que quand la balle touche le plan elle ne le touche pas en 1 point mais est un peu imbriqué dedans à cause d'un framerate faible par exemple, pour l'instant ce que je fais c'est de calculer la distance qu'elle parcourut DANS le plan est de recalculer sa position après rebond en additionnant cette distance pour que la frame ou la balle est en collision affiche que la balle a rebondi. Et mon problème principal est : que c'est-il passé ? Je ne peux pas me contenter d'inverser le vecteur vitesse physiquement ce n'est pas se qu'il c'est passé car la balle a donné son énergie au plan et le plan son énèrgie à la balle se qui induit une nouvelle force au moment du contact des 2 objets. L'accélération de la balle se presente donc sous la forme a=-g+K où K est une force délivré par le plan sur la balle et est assez forte pour inverser son vecteur vitesse mais vu que la balle n'a pas touché le plan en un point (à cause du système de frame) alors comme expliquer précedement j'ai calculé sa position logique après le rebond le malheur c'est que sa fausse le calcul de la force K que l'on doit ajouter à l'accélération de la balle.
En premier lieu dois-je repositionner la balle par rapport à la distance qu'elle à parcourut dans le plan (sachant que les coefficients de rebond des 2 objets pourront changer après) ?
Sinon dois-je repositionner la balle pile au contact du plan, calculer le temps quel a mis depuis le début de la frame jusq'au contact pour ensuite trouver la force K la rajouté à l'accélération et recalculer la vitesse et la position de la balle ?
En somme je suis un peu perdu à cause du système de frame, mon but est simple je veux juste que ma balle rebondissent sur un plan et remonte jusqu'a obtenir sa position initial et ceux même si je laisse tourner le programme un mois, bon en imaginant que je n'utilise que des variables entieres pour pas que des arrondis s'ajoutent
Si quelqu'un pouvait m'aider sa serait super simpa paceque je me creuse la tête depuis vraiment trop longtemps sur ce problème
Merci d'avance à ceux qui ont eu le courage de me lire et encore plus à ceux qui me répondront
Partager