Entwickler-Ecke

Delphi Tutorials - Schnelle Kollisionserkennung von konvexen Polygonen


F34r0fTh3D4rk - Do 29.03.07 19:17
Titel: Schnelle Kollisionserkennung von konvexen Polygonen
Schnelle Kollisionserkennung von konvexen Polygonen
mit dem Separating Axis Theorem

Einleitung

Das Separating Axis Theorem ermöglicht es, eine performante Kollision zwischen
zwei Polygonen oder einem Polygon und einem Kreis etc. zu implementieren.
Der Ansatz geht darauf zurück, dass zwei Polygone nicht kollidieren, wenn man eine
Gerade finden kann, die zwischen den beiden liegt, ohne eines der Polygone zu schneiden.
Dieses Verfahren ist deshalb so schnell, weil man nur eine bestimmte Anzahl Geraden
testen muss und man im besten Fall sehr schnell eine Achse findet, die die beiden Polygone trennt
(daher auch Separating Axis Theorem).

Das Tutorial

Das Tutorial ist ab sofort unter folgender Adresse zu finden:

http://wiki.delphigl.com/index.php/Tutorial_Separating_Axis_Theorem

Dies habe ich deshalb gemacht, damit Grafiken und Quellcodes in sicheren Händen und somit dauerhaft und
beständig verfügbar sind.


Viel Spass damit!

mfg


matze - Do 29.03.07 20:49

mal ne ganz blöde Frage: meinst du echt konvexe Polygone oder meinst du komplexe ?


F34r0fTh3D4rk - Do 29.03.07 21:39

ich meine konvexe polygone ;) aber komplex in dem sinne, dass sie beliebige viele vertices haben können auch :P

http://wiki.delphigl.com/index.php/konvex

mfg


matze - Do 29.03.07 21:48

ahhhh... danke dir. Ich bin nun wieder ein bisschen schlauer :D


F34r0fTh3D4rk - Sa 31.03.07 17:09

wenn man sehr viele polygone hat, bzw generell sehr viele vertices, wäre es sinnvoll, für jedes polygon den kleinsten umschließenden kreis zu berechnen und dann erst zu prüfen, ob sich die kreise schneiden, bevor man das SAT einsetzt, denn kreiskollisionen zu berechnen geht deutlich schneller ;) das ist lediglich eine abfrage.

mfg


F34r0fTh3D4rk - Sa 22.09.07 11:35

UPDATE: Das Tutorial wurde nun offiziell auf DelphiGL.com veröffentlicht. Diese Version ist ein wenig überarbeitet und wird dort auch auf dem aktuellsten Stand gehalten, wenn erforderlich.

mfg