Aller au contenu principal

Collisions

Il y a une multitude de techniques de détection de collision.

Sphères

Consiste à détecter si deux sphères sont en collision :

Sphères

Les RR représentent le rayon des sphères, les SS représentent la position centrale des sphères, et D\vec{D} est formé à partir des positions S1S_{1} et S2S_{2}.

Collision

Pour être en collision, D||\vec{D}|| doit être plus petite ou égale à la somme des rayons RR :

Formule

Boîtes allignées

Consiste à détecter si deux boîtes alignées aux axes sont en collision :

Boîtes allignées

Une boîte alignée est générée en trouvant les sommets minimums et maximums sur les 3 axes d'un maillage.

Collision

Des boîtes alignées BB sont en collision si l'un de leurs sommets est à l'intérieur de l'autre boîte alignée :

Formule

Sphère et Boîte allignée

Consiste à détecter si une sphère est en collision avec une boîte alignée aux axes :

Sphère et Boîte allignée

SS représente la position centrale de la sphère, RR représente le rayon de la sphère SS, et ii représente le point d'intersection le plus près de la boîte alignée BB.

Intersection

Le point d'intersection ii le plus près de la boîte alignée BB peut se calculer de la façon suivante :

Intersection

Collision

Pour être en collision, la distance entre le point d'intersection ii et la sphère SS doit être plus petite ou égale au rayon RR de la sphère SS :

Formule

Vecteur et Plan

Consiste à détecter si un vecteur V\vec{V} passe au travers un plan PP et déterminer le point d'intersection ii :

Vecteur et Plan

Le rayon RR consiste à la continuité du vecteur V\vec{V} tandis que le plan PP est formé à partir de sa normale N\vec{N} et de l'un de ses points t1t_1.

Parallèle

Par élimination, débutons par déterminer si le rayon RR croise le plan.

Le produit scalaire est la multiplication des normes ainsi que du cosinus de l'angle entre deux vecteurs :

Produit scalaire

Puisque le cosinus de 90 et -90 donne 0, le vecteur est parallèle au plan si :

Parallèle

Ratio

Sachant que le rayon croise le plan et que le point t1t_1 est sur le plan, les produits scalaires du vecteur V\vec{V} et d'un vecteur formé par v1v_1 et le point du plan t1t_1, avec la normale N\vec{N}, peuvent être utilisés pour déterminer le ratio (scalaire) du vecteur V\vec{V} et trouver où celui-ci croise le plan PP :

Ratio

  • Si le ratio rr est négatif, c'est que le vecteur V\vec{V} n'est pas en direction du plan PP.
  • Si le ratio rr est <=1<= 1, c'est que le vecteur V\vec{V} croise ou touche le plan PP.
  • Si le ratio rr est >1> 1, c'est que le vecteur V\vec{V} ne croise pas le plan PP présentement.

Intersection

Ayant le ratio rr, il ne reste qu'à multiplier le vecteur V\vec{V} par le scalaire rr afin d'obtenir le point d'intersection ii :

Intersection

Point et Triangle

Consiste à détecter si un point PP est dans un triangle :

Point dans un triangle

Il faut d’abord former trois vecteurs (A\vec{A}, B\vec{B}, C\vec{C}) à partir du point PP et des sommets (t1t_1, t2t_2, t3t_3) du triangle :

Vecteurs d&#39;un triangle

Ensuite, déterminer les normales (Nab\vec{N_{ab}}, Nbc\vec{N_{bc}}, Nca\vec{N_{ca}}) entre chacun de ces vecteurs :

Normales d&#39;un triangle

Collision

Il y a collision si les normales ont toutes la même orientation :

Formule