Berechnen Sie die Flugbahn des Projektils mit der Schwerkraft von Scheibenplaneten in 2D?

Ich mache ein 2D-Spiel, in dem Sie ein Raumschiff steuern und zwischen scheibenförmigen Planeten unterschiedlicher Größe (Masse/Anzug) fliegen. Die Planeten sind klein und Sie können mehrere auf einmal anfliegen. Ich muss die Schwerkraft berechnen, die von jedem dieser Planeten erzeugt wird, die an dem Schiff ziehen, einschließlich der Geschwindigkeit des Schiffes.

Ich habe einen Weg gefunden, es anzunähern:

  1. Berechnen Sie anhand des Winkels und der Geschwindigkeit die Position der Rakete im nächsten Frame
  2. Berechnen Sie von dieser Position aus die Position eines Punktes, der in Richtung des Planeten gezogen wird, wobei dieser Punkt umso weiter von diesem Planeten entfernt ist, je größer der Planet ist
  3. Tun Sie dies für jeden Planeten und mitteln Sie dann jeden dieser Punkte, um die neue Position für die Rakete in diesem Frame zu finden
  4. Die Drehung spielt in meinem Fall keine Rolle, aber ich würde sie berechnen, indem ich die Position dieses Punkts und die Position des vorherigen Punkts vergleiche.
  5. Wiederholen Sie dies für jeden Rahmen.

Dies mag eine gute Annäherung sein, und Genauigkeit ist in meinem Fall keine große Sache, aber ich frage mich, ob es einen besseren Weg gibt, dies mit physikalischen Formeln zu tun. Ich habe noch keinen Physikkurs besucht. Das andere Hauptproblem bei dieser Lösung besteht darin, dass sie Schritt für Schritt oder Frame für Frame berechnet werden muss. Wenn es dafür eine Formel gibt, könnte man den Weg von Anfang an vorher berechnen.

Das scheint 3D zu sein, was die Dinge für mich zu kompliziert machen würde.
Es ist in einer beliebigen Anzahl von Dimensionen gültig, einschließlich 2.

Antworten (1)

Die Formel für die Schwerkraft lautet F G = G M 1 M 2 R 2 . Speichern Sie also Variablen für Ihre X Und j Geschwindigkeiten (oder ein Array oder was auch immer Sie wünschen) und ändern Sie Ihre Position in jedem Frame um Ihre Geschwindigkeit. Verwenden Sie auch in jedem Frame eine Schleife (ich weiß nicht, welche Sprache Sie verwenden, daher kann ich keinen genauen Code angeben), um sich jeden Planeten anzusehen und alles in die Formel einzufügen und die Geschwindigkeit um den Betrag zu ändern, in dem sie zurückgegeben wird die Richtung des Planeten. Multiplizieren/dividieren Sie es mit dem, was Sie möchten, um es vernünftig zu machen, es sei denn, Sie verwenden tatsächliche Einheiten. In diesem Fall teilen Sie die Zahl durch die Masse des Schiffes. Tun Sie dies für jeden Planeten im System.

Über die Berechnung im Voraus ist dies wahrscheinlich technisch möglich, würde jedoch eine lächerliche Menge an Mathematik erfordern und möglicherweise (für den Computer) schwieriger sein, als Frame für Frame zu aktualisieren. Wenn es einen Körper gibt, ist die Flugbahn jedoch nicht allzu schwer vorherzusagen.