J'écris un simulateur de corps rigide 2D. Les objets simulés sont des polygones convexes. Ma question concerne la façon de décider du «point» de collision, de sorte que lorsque j'applique une force de réponse, je peux également calculer le couple.
En 2D, la méthode populaire de détection de collision en phase étroite semble être le théorème de l'axe de séparation. Cependant, alors que cela vous donne le "sont-ils en collision?" ainsi que "par combien?", cela ne vous donne PAS de point de référence (à ma connaissance) auquel appliquer la force de réponse (et donc calculer le couple) *.
L'autre méthode (qui m'intéresse également davantage, car c'est ce qui est utilisé en 3D, ce qui serait la prochaine étape logique) consiste à calculer la différence de Minkowski des deux polygones et à décider qu'ils entrent en collision si (0,0) est contenue dans le polygone résultant. Mais, comment utilisez-vous cela pour décider du point relatif auquel appliquer la force de réponse? Mon hypothèse est que, puisque chaque face de cette différence correspond effectivement à une face de l'un des polygones, la distance de séparation est la distance la plus courte de (0,0) au MD, et vous l'appliquez à la face correspondante sur le polygone .
En prime, comment faire cela en 3D?
* Au moment où j'écris ceci, je viens de réaliser que, en utilisant SAT, je pouvais simplement garder une trace des points qui se chevauchent et appliquer la force à la "moyenne" de ces points. Mais je devrais décider sur lequel des plusieurs axes non séparateurs effectuer ce petit truc ...