Collision Sphère / Plan
Détection de la collision
Une fois le calcul des nouvelles positions des objets effectué, il est nécessaire de détecter s'il collisionne avec un autre objet. Dans le cas de la collision Sphère / Plan cette détection ce fait aisément en comparant la distance du centre de la sphère au plan avec le rayon de la sphère :
La condition de collision est , avec R rayon de la sphère
Gestion de la collision
Une première idée pour gérer la collision entre deux corps rigides est d'appliquer une force de réaction aux objets. Cependant cette force ne va pas arrêter les objets immédiatement et ne va donc pas empêcher leur interpénétration, car elle ne pourra pas changer instantanément le sens des vitesses.
Une force va mettre trop de temps à inverser les vitesses or les corps sont déjà en contact, il faut donc agir immédiatement sur leur vitesse. C'est pourquoi nous allons calculer la vitesse réfléchie par rapport à la normale de la collision (la normale du plan dans ce cas) . Celle-ci remplacera ensuite l'ancienne vitesse.
La vitesse réfléchie peut être obtenue grâce à la relation suivante:
Recalage au point de contact exact
Du fait que le calcul des positions ne peut se réaliser de manière continue (il s'effectue à chaque frame donc tous les Dt secondes), au moment où l'on détecte la collision, les objets vont s'être déjà interpénétrés.
Il est alors nécessaire de replacer les objets au point de contact exact pour être certain qu'à la frame suivante, les deux objets se seront bien séparés. En effet si l'on ne réalise pas ce recalage, il est possible que les objets n'aient pas eu le temps de compenser l'interpénétration à la frame suivante (notamment si le Dt suivant est faible). Dès lors, le moteur va détecter de nouveau une collision etc.
On recale l'objet dans la direction de sa vitesse au moment ou l'on détecte la collision. On cherche en fait à « remonter dans le temps » afin de trouver le point de collision exact. On calcule dans un premier temps la pente de la vitesse (représentée par des pointillés bleus sur le schéma ci-dessus).
On a alors
or, d'où, et donc finalement,
Connaissant on peut alors aisément replacer la sphère à la bonne position.
Dans le cas ou la sphère entre en collision avec plusieurs objets (par exemple avec deux plans), on calcule, pour chacune des collisions, la distance nécessaire au recalage de la sphère. Finalement, on garde le plus grand pour recaler physiquement la sphère et ainsi éviter toute interpénétration avec les autres objets :
La collision Sphère / Sphère
Détection de la collision
La détection de la collision Sphère / Sphère est relativement simple. Soient deux sphères :
·
de centre
et de rayon
·
de centre
et de rayon
On forme le vecteur
et l’on pose
. Ensuite, il suffit de vérifier que
pour s’assurer de la collision.
Gestion de la collision
Notre gestion de la collision va prendre en compte l’inertie des deux objets. En effet, une boule de bowling lancée a grande vitesse ne sera pas influencée par le contact avec une balle de ping-pong.
Tout d’abord, on se place dans le repère local défini par l’axe de direction
et l’axe perpendiculaire. Seule la composante des vitesses suivant l’axe
sera modifiée. On donnera ici la solution sans démonstration. On pose donc :
et l’on a
.
De même,
et l’on a
.
On remarquera dans ces formules que si les sphères sont de masses égales et si les vitesses au point de rencontre sont les mêmes alors on a
. On retrouve alors le calcul classique d’un vecteur réfléchi par rapport à une normale (suivant
) soit
.
Recalage au point de contact
Pour les mêmes raisons que précédemment (voir recalage Sphère / Plan) on va chercher à recaler les deux sphères.
Dans le cas de cette collision on va reculer les deux sphères suivant la direction de leur vitesse respective jusqu'au moment où elles ne possèdent plus qu'un seul point d'intersection, leur point de contact.
On a avec ( resp. ), pente de la vitesse de l’objet 1 ( resp. 2).
et de plus il faut que pour être au point exact de contact. Donc,
On a donc un système à deux équations et deux inconnus que l'on peut résoudre aisément par les méthodes classiques. On arrive alors a
il faudra donc reculer la sphère 1 de et la sphère 2 de .
Rem : Suite à la présentation orale du projet, une question nous a permis de voir une limite dans cette méthode. En effet, la variable « b », posée ainsi, suppose que les vitesses sont coplanaires, ce qui n’est pas forcément vrai.
Il faudrait donc trouver la démonstration dans le cas général, en distinguant les variables et .