Ich schreibe einen 2D-Starrkörpersimulator. Die zu simulierenden Objekte sind konvexe Polygone. Meine Frage ist, wie ich über den "Kollisionspunkt" entscheiden soll, damit ich beim Aufbringen einer Reaktionskraft auch das Drehmoment berechnen kann.
In 2D scheint die beliebte Methode zur Erkennung von Schmalphasenkollisionen das Trennachsen-Theorem zu sein. Während dies Ihnen jedoch das "Kollidieren sie?" sowie "um wie viel?" gibt es Ihnen KEINEN Referenzpunkt (den ich kenne), an dem Sie die Reaktionskraft anwenden (und somit das Drehmoment berechnen) *.
Die andere Methode (die mich auch mehr interessiert, weil sie in 3D verwendet wird, was der logische nächste Schritt wäre) besteht darin, die Minkowski-Differenz der beiden Polygone zu berechnen und zu entscheiden, dass sie kollidieren, wenn (0,0) ist im resultierenden Polygon enthalten. Aber wie verwenden Sie dies, um den relativen Punkt zu bestimmen, an dem die Antwortkraft angewendet werden soll? Meine Hypothese ist, dass, da jede Fläche dieses Unterschieds effektiv einer Fläche eines der Polygone entspricht, der Abstand der kürzeste Abstand von (0,0) zur MD ist und Sie diesen auf die entsprechende Fläche des Polygons anwenden .
Wie macht man das als Bonus in 3D?
* Während ich dies schreibe, habe ich gerade festgestellt, dass ich bei Verwendung von SAT einfach verfolgen kann, welche Punkte sich überlappen, und die Kraft auf den "Durchschnitt" dieser Punkte anwenden kann. Aber ich müsste mich entscheiden, welche der mehreren nicht trennenden Achsen diesen kleinen Trick ausführen soll ...