Hey,
ich stehe vor einem Problem, bei dem ich nicht weiterkomme.
Folgende Situation: Ich habe eine Spielwelt, in der periodisch neue Positionen für alle möglichen Objekte berechnet werden. Vor jeder neuen Positionsberechnung wird geprüft, ob die Objekte nach der nächsten Positionsänderung durch ihre Geschwindigkeit kollidieren würden. Wenn ja, möchte ich den Vektor berechnen, um den beide Körper in Geschwindigkeitsrichtung verschoben werden müssten, damit sie "gerade" nicht kollidieren.
Mein Ansatz dazu ist folgender:
Drawing #1001
Ich berechne die gemeinsame Fläche beider Körper. Dann schaue ich, wo in dieser Fläche in Geschwindigkeitsrichtung die größte Distanz ist und bewege den Körper in Richtung des Gegenvektors.
Ich möchte die größtmögliche Performance!
Deshalb wäre es eigentlich günstig, wenn ein Körper alle Punkte gespeichert hätte, die ganz außen liegen.
Wenn jedem Körper also quasi ein Skelett zugeordnet wäre.
Das Skelett kann man als Linie auffassen, die an den Rändern des Körpers entlangläuft, und müsste die Schnittpunkte der Skelette kennen.
Hat jemand einen Vorschlag, wie ich eine Datenstruktur realisieren könnte, die die Skelette der Körper angibt und mit der sich mein Ansatz performant realisieren lassen könnte?
Oder hat jemand einen anderen Vorschlag zur Kollisionsprävention?
MfG,
Malte
ich stehe vor einem Problem, bei dem ich nicht weiterkomme.
Folgende Situation: Ich habe eine Spielwelt, in der periodisch neue Positionen für alle möglichen Objekte berechnet werden. Vor jeder neuen Positionsberechnung wird geprüft, ob die Objekte nach der nächsten Positionsänderung durch ihre Geschwindigkeit kollidieren würden. Wenn ja, möchte ich den Vektor berechnen, um den beide Körper in Geschwindigkeitsrichtung verschoben werden müssten, damit sie "gerade" nicht kollidieren.
Mein Ansatz dazu ist folgender:
Drawing #1001
Ich berechne die gemeinsame Fläche beider Körper. Dann schaue ich, wo in dieser Fläche in Geschwindigkeitsrichtung die größte Distanz ist und bewege den Körper in Richtung des Gegenvektors.
Ich möchte die größtmögliche Performance!
Deshalb wäre es eigentlich günstig, wenn ein Körper alle Punkte gespeichert hätte, die ganz außen liegen.
Wenn jedem Körper also quasi ein Skelett zugeordnet wäre.
Das Skelett kann man als Linie auffassen, die an den Rändern des Körpers entlangläuft, und müsste die Schnittpunkte der Skelette kennen.
Hat jemand einen Vorschlag, wie ich eine Datenstruktur realisieren könnte, die die Skelette der Körper angibt und mit der sich mein Ansatz performant realisieren lassen könnte?
Oder hat jemand einen anderen Vorschlag zur Kollisionsprävention?
MfG,
Malte