Kollisionspunktbestimmung Poly / Poly; SAT

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

Fetze

Betreff: Kollisionspunktbestimmung Poly / Poly; SAT

BeitragMo, Mai 12, 2008 23:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Heyho.

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

Ich habe eine Kollisionsprüfung zwischen Polygon und Polygon und nutze dafür das 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.

StepTiger

BeitragMo, Mai 12, 2008 23:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, einen Schnittpunkt zweier Polygone ist nicht so einfach.

Polygone können von 0, über 1 (Berührung), 2(Ecke), 3(Durchgang mit Berührung am Ende), 4(Durchgang), 5(Durchgang auf 2 Seiten) und 6(Durchgang auf jedem Punkt) bis zu unendlich (Senkrecht, seitliche Berührung usw.) Schnittpunkte haben.

Und dann müsstest du annähern auf 2 Punkte, davon kannst du eine Linie mit Senkrechte bilden und nach der kannst du dann beurteilen, wie sehr du das Objekt drehen kannst.

Physik-Engine?
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

Dreamora

BeitragMo, Mai 12, 2008 23:29
Antworten mit Zitat
Benutzer-Profile anzeigen
schnittpunkt 2er polygone is eigentlich sogar sehr einfach: polygon nur so erlaubt, das sie keine einschnitte haben -> einfache triangulierung (alle sind identisch wegen obiger einschränkung)
-> wenn du weisst das sie schneiden, teste auf triangle - triangle kollision, davon erhälst du einen kollisionspunkt.
gibt vermutlich noch effizientere ansätze aber das ist ein grundansatz auf dem du aufbauen kannst.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Fetze

BeitragDi, Mai 13, 2008 0:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich vremute, Triangulationsverfahren mit anschließender Dreiecksprüfung sind eher zu langsam. Es geht auch nicht zwingend um einen exakten Schnittpunkt.

Auf dem folgenden Bild habe ich dargestellt, wie ich mir die Schnittpunktbestimmung - analog zu der bei zwei Kreisen - vorstelle. Mir ist bewusst, dass das ganze nicht 100% mathematisch exakt ist, aber die gegebene Genaugkeit sollte ausreichen.

user posted image

Das Problem hier besteht dabei, die Kantenschnittpunkte zu finden, aus deren Mittelwert sich der "Schnittpunkt" ableiten lässt. Jede Kante mit jeder Kante vergleichen *ginge* zwar, wäre jedoch recht lahm.. doch wie treffe ich (im Idealfall mittels SAT) eine Kanten-Vorauswahl..? ôo

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group