2D Polygon Kollisionserkennung

8

Kennt jemand eine einfache Möglichkeit zu überprüfen, ob zwei Polygone, insbesondere Rechtecke, kollidieren? Ich habe einen einfachen Weg gefunden, um zu sehen, ob sich zwei berühren, indem ich einfach überprüfe, ob irgendwelche Linien auf den beiden Rechtecken zusammenstoßen, aber dies funktioniert nicht, wenn ein Polygon in einem anderen ist. Kennt jemand einen effizienteren Weg, dies zu tun, oder nur einen Weg, der funktioniert?

Kann mir bitte auch jemand eine Formel dafür oder etwas ähnliches geben und nicht nur Ihre Gedanken zu diesem Thema.

Danke

    
Matt 19.10.2010, 20:32
quelle

4 Antworten

12

Schauen Sie sich den Trennachsensatz an. Es gibt ein Tutorial hier .

Es ist schnell, elegant, robust, nicht zu schwer und hat viele Ressourcen.

    
GManNickG 19.10.2010, 20:37
quelle
5

Besuche Ссылка

Diese Seite hat mir unendlich geholfen, meine eigenen Kollisionserkennungsroutinen zu entwickeln. Je nach verfügbarer Rechenleistung können Sie in Bezug auf die Kollisionsgenauigkeit alles erreichen, was Sie wollen. Beginnend mit dem wenigsten Prozessorintensiv:

1) Bounding Box: Gut für rechteckige Formen und schnell zu booten. Alles, was Sie wissen müssen, ist die (x, y) Position des Objekts sowie seine Breite und Höhe.

2) Trennachsensatz (SAT): Kann komplexere Formen handhaben und ist ziemlich intuitiv.

3) SAT mit Voronoi-Regionen (VR): Verwendet Informationen darüber, welcher Eckpunkt eines gegebenen Polygons am nächsten ist, um die Gesamtzahl der Berechnungen zu reduzieren.

All dies wird im obigen Link ausführlich erklärt. Es ist anzumerken, dass die genannten Methoden bisher am besten für konvexe Polygone geeignet sind. Wenn Sie in absurde Genauigkeitsniveaus gehen wollten, dann beginnen Sie mit Dingen wie Bitmap-Tests, die schrecklich langsam und für fast alles übertrieben sind.

    
phobos51594 20.10.2010 00:00
quelle
0

Es gibt mehrere Methoden, die einfache ist nur zu prüfen, ob es gibt und Überschneidungen in X-oder Y-Grenzen. Dies funktioniert jedoch nur mit Rechtecken, die an der Achse ausgerichtet sind.

Es gibt Grenzen, die überprüft werden, ist die Ecke eines Objekts mit den Grenzen der Koordinaten der anderen.

Von dort wird die Kollisionserkennung weiter entwickelt. Überprüfen, um zu sehen, ob es eine Linie gibt, die man zwischen ihnen in irgendeiner Richtung und so zeichnen kann.

    
ewanm89 19.10.2010 20:38
quelle
-3

Beispiel:

Rechteck A

Linke, obere Ecke (x, y). Breite, Höhe.

Rechteck B

Linke, obere Ecke (x1, y1).

Bedingung

(x & gt; = x1) und (x & lt; = x1 + width) = & gt; Kollision für die x-Achse. Für y-Achse das gleiche, aber mit y und y1 und Höhe.

    
bswietochowski 19.10.2010 20:57
quelle

Tags und Links