Fabian W. hat folgendes geschrieben: |
Dabei sehe ich 2 Probleme:
a) Kleine, schnelle Objekte können durch andere hindurchfliegen
b) Bei der Ausgabe eine Frames kann es vorkommen, dass sich 2 Polygone noch in einander befinden |
Wie bereits gesagt ist die Penalty-Methode die wohl einfachste Methode, eine Physikengine zu schreiben.
Auch wenn du die genannten Probleme löst, wirst du weitere bekommen. Kontinuierliche Kollisionserkennung ist nur bedingt eine Lösung und wird in bestimmten Situationen sehr schlecht funktionieren (denk z.B. an ein Stapel Kisten). Wenn du alle Probleme lösen willst, dann musst du etwas tiefer in die mathematische Trickkiste greifen und es bleiben dir nicht viel andere Lösungen als die komplizierten Ansätze in kommerziellen Engines.
Kollisionserkennung würde ich nicht unbedingt selbst von Null programmieren. Ansonsten eignet sich Scanline-Methoden oder noch einfacher du speicherst dir gleich ein "schwarzweiss"-Bitmap, welches jedes Objekt umgibt. Abfragen, ob ein Punkt in einem Objekt ist, gehen dann sehr schnell, dafür hast du nur begrenzte Genauigkeit. Wenn du die Tiefe eines Punktes in einem Objekt für Berechnungen brauchst, kannst du auch ein Graustufenbild nehmen, statt ein Schwarzweissbild.