ActiviT: Javascript 2D Engine programmieren

Beitrag lesen

Hallo ActiviT,

Aber ich kann doch gar nicht wissen, wann eine Kollision stattfinden wird. Es kann doch passieren, dass eine Kugel A 10 Wegeinheiten zurückgelegt. Eigentlich würde Kugel A die Kugel B gar nicht treffen. Nun kommt aber Kugel C ins Spiel, die Kugel B in ihrer Richtung verändert.
Kugel C kommt ja nicht aus dem nichts, die hatte vorher schon eine Geschwindigkeit und eine Richtung. Du würdest also berechnen, dass das nächste Ereignis ist, dass Kugel C Kugel B trifft. Nun würdest Du diesen Zeitpunkt ausrechnen. Danach würdest Du feststellen, dass jetzt als nächstes Kugel B Kugel A trifft usw.
Du kannst nicht alle Kollisionen voraus berechnen, sondern nur die nächste, das reicht aber um zu wissen, dass Du keine Kollisionen "bersiehst".

Innerhalb desselben Zeitabschnitts, kracht Kugel B also gegen Kugel A, obwohl es in einem Schleifendurchlauf vorher noch gar nicht so ausgesehen hat.
Eben das ist der Punkt, es gibt keine fixen Zeitabschnitte in diesem Ansatz. Der Zeitabschnitt wird immer so gewählt, dass er gerade bis zur nächsten Kollision reicht.

Aha, jetzt verstehe ich das. D.h. ich gucke, welche Kollision als nächstest stattfindet, berechne was passiert und lasse dann die Zeit bis zu diesem Zeitpunkt vergehen (also bis die Objekte sich treffen). Danach gucke ich wieder, welche Kollision als nächstes stattfindet usw. Ist das jetzt richtig oder immer noch nicht?

Elliptische Kurven kann es bei mir doch genauso geben. Da müsste ich ja alles vorberechnen.
Nuja irgendwann brauchst Du dann natürlich Numerik, um die Schnittpunkte der Bahnen zu berechnen. Aber bist Du Dir sicher, dass Du so etwas brauchst.

Naja, wenn ich Objekte habe, die andere anziehen (z.B. Planeten o.ä.), werde ich wohl nicht drumherum kommen. Reicht da der Mathe LK in der Oberstufe aus? :)

Für Dein Spieleszenario brauchst Du das aber eigentlich alles nicht. Spielfiguren laufen ja eigentlich immer nur gerade aus (Ausnahme wohl Rennspiele).

Aber was ist, wenn der böse Endgegner einen Magneten hat, um den Held in einen Lavasee zu ziehen? Das muss ich ja irgendwie berechnen! ;)