Entwickler-Ecke

Algorithmen, Optimierung und Assembler - Betreff: Kollisionspunktbestimmung Poly / Poly; SAT


Fetze - Mo 12.05.08 22:13
Titel: Betreff: Kollisionspunktbestimmung Poly / Poly; SAT
Heyho.

Ich poste das mal hier, da es sich um ein allgemeines mathematisches Problem handelt und nicht um ein speziell .Net/C#/Delphi/..-bezogenes. Es geht um folgendes:

Ich habe eine Kollisionsprüfung zwischen Polygon und Polygon und nutze dafür das Separating Axis Theorem [http://wiki.delphigl.com/index.php/Tutorial_Separating_Axis_Theorem]. Funktioniert alles prima, inklusive Errechnung des resultierenden Minimum Translation Vectors bzw. des "Verschiebevektors" zur Trennung der beiden Polygone nach einer Kollision.

Leider benötige ich weiterhin einen etwaigen Schnittpunkt um - beispielsweise - eine Impulsübertragung mit Drehimpuls kollidierter Objekte durchzuführen. Mir ist allerdings nicht klar, wie ich den erhalten soll. Welche Möglichkeiten gibt es (Und wie sind diese ggf. mathematisch umsetzbar)? Welche sind am performantesten?

Es stehen selbstverständlich als Grundlage die Projektionsachsen beider Polygone, je eine Boundingbox und die Koordinaten all ihrer Punkte zur Verfügung.


BenBE - Do 15.05.08 10:16

IMHO brauchst Du nur nach Errechnung des Verschiebe-Vektors zu schauen, welche beiden Kanten scheiden. Da Du (IIRC) dazu eh bereits weißt, um welche Axe es sich handelt, solltest Du damit gleichzeitig aber auch wissen, welche Kante das betrifft.