Kollisionserkennung
Verfasst: 08.05.2009, 16:42
Hallo!
Ich schreibe zur zeit ein Programm, in welchem 2D Objekte Miteinander kollidieren können: Kugeln mit Wänden und Kugeln untereinander.
Das tun sie auch ganz gut miteinander. Aber so ganz sauber ist das alles jedoch nicht. Der Ablauf der Kollisionserkennung sieht zunächst wie folgt aus:
Kollisionserkennung zwischen Linien und Kugeln.: Liste durchschleifen und Auf Zusammenstöße reagieren. Es wird nicht darauf geachtet, welche Objekte ZUERST Kollidiert sind. Es werden lediglich die Kugeln so lange behandelt, bis sich nichts mehr überschnitten hat und die Strecke für diesen Zeitschritt aufgebraucht ist. Das will ich jetzt aber verbessern.
Die Implementierung der Erkennung der Kugeln untereinander hat zwar funktioniert, liefert jedoch kein, aufgrund einer fehlenden beachteten Größe keine fruchtenden Ergebnisse. Denn die Zeit selbst zwischen den Zeitschritten muss auch noch unterteilt werden.
Praktisch gesehen dachte ich mir das wie folgt: Es soll die Reihenfolge der Zusammenstöße beachtet werden.
Also gleiche ich alle Objekte miteinander ab, suche die Früheste Kollision während des Zeitschrittes und behandle diese entsprechend. die beiden Objekte ändern Ihre Position und ein nächster check wird durchgeführt. Ich hätte aber einen ziemlichen Overhead verursacht. Kennt jemand hierfür ein gutes Entwurfsmuster? Das Management während einer solchen Abfrage...
Vielen dank fürs Lesen!
schönes Wochenende,
dba
Ich schreibe zur zeit ein Programm, in welchem 2D Objekte Miteinander kollidieren können: Kugeln mit Wänden und Kugeln untereinander.
Das tun sie auch ganz gut miteinander. Aber so ganz sauber ist das alles jedoch nicht. Der Ablauf der Kollisionserkennung sieht zunächst wie folgt aus:
Kollisionserkennung zwischen Linien und Kugeln.: Liste durchschleifen und Auf Zusammenstöße reagieren. Es wird nicht darauf geachtet, welche Objekte ZUERST Kollidiert sind. Es werden lediglich die Kugeln so lange behandelt, bis sich nichts mehr überschnitten hat und die Strecke für diesen Zeitschritt aufgebraucht ist. Das will ich jetzt aber verbessern.
Die Implementierung der Erkennung der Kugeln untereinander hat zwar funktioniert, liefert jedoch kein, aufgrund einer fehlenden beachteten Größe keine fruchtenden Ergebnisse. Denn die Zeit selbst zwischen den Zeitschritten muss auch noch unterteilt werden.
Praktisch gesehen dachte ich mir das wie folgt: Es soll die Reihenfolge der Zusammenstöße beachtet werden.
Also gleiche ich alle Objekte miteinander ab, suche die Früheste Kollision während des Zeitschrittes und behandle diese entsprechend. die beiden Objekte ändern Ihre Position und ein nächster check wird durchgeführt. Ich hätte aber einen ziemlichen Overhead verursacht. Kennt jemand hierfür ein gutes Entwurfsmuster? Das Management während einer solchen Abfrage...
Vielen dank fürs Lesen!
schönes Wochenende,
dba