3-B/ Les rebonds

 

Une collision entraîne forcément la modification du comportement d’un objet.

 

Le rebond sur le segment

 

Le rebond de la balle sur la droite Δ d’équation ax + b + cy = 0 se traduit par un changement d’orientation de la vitesse de la balle dans le plan selon les axes x et y.

 

La balle a une vitesse incidente et une vitesse réfléchie. L’orientation de la droite Δ détermine l’orientation de la vitesse réfléchie.

 

On peut représenter le rebond avec le schéma ci-dessous :

 

 

 

 

 

 

On calcule la vitesse de la balle après rebond à partir de la vitesse incidente de la balle et de la normale au segment de droite.

Les coordonnées de la normale à une droite Δ d’équation ax + b + cy = 0 sont données par les coefficients a et c, soit .

 

Soit  la vitesse incidente de la balle avant rebond et la vitesse réfléchie après rebond.

 

 est le produit scalaire des vecteurs  et .  

représente la projection de la vitesse incidente sur la normale au segment de droite.

 

Par conséquent :

 

C’est-à-dire en développant :

 

Voilà une capture d’écran montrant le moteur en action. Les lignes noires sont l’ensemble des positions occupées par le centre des deux balles : leur trajectoire. On constate que le centre des balles ne touche jamais les segments percutés.

 

 

 

 

Les exceptions

 

1.    La balle arrive tangentiellement au segment de droite et percute une des extrémités

 

Dans ce cas, on considère que la balle doit rebondir sur un segment fictif, perpendiculaire au segment de droite et situé à l’extrémité de ce dernier.

 

 

On calcule la vitesse de la balle après rebond à partir de la vitesse incidente de la balle et de la normale au segment fictif, qui est perpendiculaire à la normale  au segment de droite.

 

   avec    


 

 

C’est-à-dire en développant :

 

2.    Deux collisions simultanées

 

Ce cas n’est pas traité par le programme M2D. Il peut être à l’origine d’un disfonctionnement occasionnel. En fait le programme M2D passe en revue toutes les segments de droite et vérifie la présence d’une collision ou non. Lorsqu’une collision est détectée, alors la balle rebondit.

 

Pour un résultat optimal, il faudrait en fait détecter toutes les collisions et ensuite seulement appliquer le rebond qui convient. Dans le cas d’une collision unique, cela revient à ce que nous avons fait. S’il existe plusieurs collisions (pas plus de deux théoriquement), il faudrait déterminer une normale fictive, résultante des normales aux deux segments percutés, comme ci-dessous :

 

 

 

En pratique, ce problème est mineur car généralement, immédiatement après avoir rebondi sur le segment vert, la balle rebondit sur l’orange et tout se passe correctement. Mais parfois, la nouvelle position de la balle ne touche plus le segment orange après le rebond sur le vert, donc la balle poursuit sa course alors qu’elle aurait du taper les deux segments.
 

 

Précédente : La détection des collisions                                            Suite : La gravité