Aloha,
Ich entwickle derzeit ein Physik-Spiel (für die Smartphone-Plattform Android) und brauche dabei natürlich auch Kollisionen zwischen beweglichen Elementen (gegeben durch Position X,Y und Geschwindigkeit X,Y).
Das ist ganz grundsätzlich eigentlich kein Problem, ich schau' halt, ob sich ein Objekt mit einem anderen überlappt und wenn ja, dann berechne ich deren neue Geschwindigkeit ("abprallen"). Zusätzlich "trenne" ich die Objekte wieder, um die Überlappung zu beseitigen (sodass sie sich berühren, aber nicht ineinander reinragen).
Allerdings führt das schnell zu Problemen, wenn mehrere Objekte aufeinanderliegen (beispielsweise ein großer Haufen Kugeln, der von der Schwerkraft nach unten gezogen wird). Hier kollidieren ja ständig alle Bälle und ändern ihre Richtung und werden neu platziert etc. - das führt zu hässlichen Sprüngen und durch mathematische Ungenauigkeiten bzw. sich aufschaukelnde Fehler dazu, dass Kugeln dauerhaft in andere reinrutschen oder komplett die Positionen vertauschen.
Der Grund: Eine Kugel kollidiert (während sie da auf dem Haufen liegen) mit einer anderen -> diese wird abgestoßen -> stößt auf eine andere Kugel -> wird wieder zurückgestoßen -> stößt wieder auf die andere -> ... doof.
Das ganze Konzept ist imo schon fehlerträchtig, weil immer nur einzelne Kollisionen zweier Objekte betrachtet werden, unabhängig davon, was alles davon abhängt bzw. worauf das Einfluss hat.
Doch was ist die bessere Methode? Wie machen es Physiksimulationen (wie Phun)? Wie erfasst man das gesamte Gefüge und nicht nur immer 1:1-Kollisionen?
meine Frage bezieht sich nicht auf die eigentliche Umsetzung in Code, ich suche eher ein Konzept wie man sowas angeht. Habe bei google leider nichts gefunden und mich in mehrere hunderttausend Zeilen Code einzulesen, nur um irgendwann die Kollisionsabfrage daraus extrahieren zu können, ist jetzt auch nicht so praktikabel
Ich will keine 100% realistische Physik (das gibt die Rechenleistung des Gerätes gar nicht her), aber sie soll funktionieren!
Grüßle, flo