Berechnung des Vektors zum Zielen auf einen sich bewegenden Asteroiden (3D-Asteroidenspiel)

Wenn man bedenkt, dass wir uns in einem 3D-Koordinatensystem befinden:

  1. unser Schiff ist an Punkt A, bewegungslos
  2. Unser Schiff kann Kugeln abschießen, deren Geschwindigkeit bekannt ist
  3. Der Asteroid befindet sich an Punkt B
  4. Der Asteroid bewegt sich auf einem bekannten Vektor mit bekannter Geschwindigkeit

Frage : Auf welchen Vektor muss unser Schiff schießen, damit der Asteroid getroffen wird?

Mein bisheriger Versuch: Finden Sie einen Punkt C, so dass:

  1. Distanz(A,C) / Geschwindigkeit_von(Kugel) = Distanz(B,C) / Geschwindigkeit_von(Asteroid)
  2. Punkt C liegt auf dem bekannten Vektor des Asteroiden

Und ich stecke hier fest.

Bewegt sich das Schiff nicht auch, wie die ursprünglichen Asteroiden?
@ ja72 Ich wollte die Dinge vereinfachen.
Gibt es überhaupt eine Lösung, ohne die Geschwindigkeit der Kugel zu kennen?

Antworten (3)

Das ist ein guter Anfang, aber Punkt 2 kann noch etwas präzisiert werden. Nehmen wir an, der Asteroid startet um B 0 zum Zeitpunkt 0 und hat konstante Geschwindigkeit B ˙ . Dann seine Position zur Zeit T Ist

(1) B ( T ) = B 0 + T B ˙ .
Dein C ist nur ein Punkt auf dieser Linie, den wir wissen würden, wenn wir es nur wüssten T H ich T , der Zeitpunkt, zu dem die Kugel die Asteroide trifft:
(2) C = B ( T H ich T ) .

Aber wie zu finden T H ich T ? Nun, wir können aus der Perspektive der Kugel arbeiten, deren Position ich mit bezeichnen werde A ( T ) (Sie müssen sich keine Sorgen um das Schiff machen, da es sich nicht bewegt). Nach wie vor haben wir

(3) A ( T ) = A 0 + T A ˙ ,
außer hier A ˙ ist eine unbekannte Vektorkonstante. Eigentlich ist es nicht ganz unbekannt, da muss es befriedigen
(4) v 2 = A ˙ A ˙ = A ˙ X 2 + A ˙ j 2 + A ˙ z 2 ,
Wo v ist die feste Geschossgeschwindigkeit. Nun muss der Auftreffpunkt wieder entlang der Flugbahn des Geschosses liegen, und zwar nach der gleichen verstrichenen Zeit:
(5) C = A ( T H ich T ) .

Die Gleichungen (1), (2), (3) und (5) bilden zusammen

(6) B 0 + T H ich T B ˙ = A 0 + T H ich T A ˙ .
Dann bilden (4) und (6) ein System von 4 Skalargleichungen in 4 Unbekannten ( T H ich T , A ˙ X , A ˙ j , Und A ˙ z ) und kann somit eindeutig gelöst werden.

(Tatsächlich kann es je nach den tatsächlichen Werten zwei oder keine Lösungen geben. Null Lösungen bedeuten, dass Ihre Kugel zu langsam ist, um jemals aufzuholen. Zwei Lösungen bedeuten wahrscheinlich, dass eine negativ ist T H ich T , als wäre die Kugel vom Asteroiden in der Vergangenheit zum Schiff in der Gegenwart gegangen. Obwohl es auch bedeuten könnte, dass es zwei Chancen gibt, den Asteroiden zu treffen.)


Bei einem fahrenden Schiff die Geschwindigkeit Ihres Geschosses in diesen Koordinaten, A ˙ B u l l e T , ist gegeben durch die Summe der bekannten Schiffsgeschwindigkeit, wenn beispielsweise die Kugel abgefeuert wird A ˙ S H ich P , und die zu findende Geschwindigkeit des Geschosses in Bezug auf das Schiff, A ˙ R e l A T ich v e . Um damit zu arbeiten, lösen Sie einfach nach auf A ˙ B u l l e T (aka A ˙ ) wie oben, und dann berechnen

A ˙ R e l A T ich v e = A ˙ B u l l e T A ˙ S H ich P .

Vielen Dank für die Antwort, aber ich verstehe nicht, woher Gleichung (4) kommt (lineare Algebra?) Das ist eigentlich keine Hausaufgabe - und deshalb wäre ich sehr dankbar, wenn Sie mir sagen könnten, was außer der klassischen Physik noch muss ich lernen, um Ihre Lösung vollständig zu verstehen (und sie möglicherweise zu modifizieren, um ein sich bewegendes Schiff zu berücksichtigen)?
beachte das auch A 0 C = A 0 B 0 T B ˙ = v T .
@Bradley My (4) ist nur eine Art, Ihre Aussage zu schreiben: "Unser Schiff kann Kugeln abschießen, deren Geschwindigkeit bekannt ist" - ich schreibe diese bekannte Geschwindigkeit als v , und in meiner Schreibweise der Vektor A ˙ = ( A ˙ X , A ˙ j , A ˙ z ) ist nur der Geschwindigkeitsvektor für die Kugel. A ˙ = v ist die grundlegende Nebenbedingungsgleichung, aber diese ist einfacher zu schreiben, indem beide Seiten quadriert werden.

Sie müssen dies in ein 2D-Problem umwandeln. 3 Einheitsvektoren finden, die ein lokales 3D-Koordinatensystem beschreiben, bei dem das planare Problem entlang des lokalen liegt ich ^ Und J ^ Achsen, mit der Ebene senkrecht k ^ . Der Index A bezeichnet den Asteroiden und B die Kugel mit R Positionen, e Wegbeschreibung u v Geschwindigkeiten. Die Notation ist umgekehrt zum OP, da A = Asteroid, B = Kugel leichter zu merken ist.

  1. Geben Sie der lokalen y -Achse die Bewegungsrichtung des Asteroiden an J ^ = e A
  2. Die Ebenennormale ist also k ^ = N Ö R M A l ich z e D ( e A × ( R B R A ) ) , Wo × ist ein Vektorkreuzprodukt.
  3. Die lokale x -Achse ist ich = N Ö R M A l ich z e D ( e A × k ^ ) , Wo N Ö R M A l ich e D ( ) ist eine Vektornormalisierung (Größe gleich eins). Dieser Vektor steht senkrecht auf der Asteroidenbahn und zeigt vom Raumschiff weg .
  4. Der senkrechte Abstand des Schiffes zur Flugbahn des Asteroiden ist H = ich ^ ( R A R B ) , Wo ist das Skalarprodukt.
  5. Der parallele Abstand des Schiffes zum Asteroiden beträgt D = J ^ ( R A R B ) .
  6. Der unbekannte Winkel zwischen den Trajektorien in der Ebene ist θ was zu den Schnittgleichungen führt
    H = ( v B Sünde θ ) T v A T + D = ( v B cos θ ) T
    zu lösen T Und θ
  7. Die Lösung, die ich bekam, war
    T = D v A + v B 2 ( D 2 + H 2 ) H 2 v A 2 v B 2 v A 2
    θ = Sünde 1 ( H v B T )
  8. Die Richtung der Kugel ist e B = ich ^ Sünde θ + J ^ cos θ

Asteroid

Ich habe eine Skizze hinzugefügt, um die Berechnung klarer zu machen (hoffe ich).

Angenommen, Sie schießen mit einer bestimmten Geschwindigkeit eine unendliche Anzahl virtueller Kugeln ab v in alle möglichen Richtungen. Manchmal T diese virtuellen kugeln liegen künftig auf der oberfläche einer kugel mit radius v T . Diese sphärische Oberfläche wächst offensichtlich mit der Zeit. Angenommen, das zu der Zeit T , durchquert der sich bewegende Asteroid diese Kugel. Diese Kreuzung sagt Ihnen, wo Sie schießen möchten.

Das Schiff ist am Ziel A zu jeder Zeit, und der Asteroid ist am Punkt B zunächst und bewegt sich mit einiger Geschwindigkeit v . Der Verschiebungsvektor vom Schiff zum Asteroiden ist B A + v T . Bezeichnung B A als D 0 u ^ Und v als v v ^ , die Entfernung zwischen dem Schiff und dem Asteroiden ist gegeben durch D ( T ) 2 = D 0 2 + 2 D 0 v u ^ v ^ T + v 2 T 2 .

Lassen ϕ sei der Winkel zwischen dem anfänglichen Verschiebungsvektor vom Raumschiff zum Asteroiden und dem Geschwindigkeitsvektor des Asteroiden. In Bezug auf das oben Gesagte cos ϕ = u ^ v ^ . Dies gibt eine alternative Möglichkeit, die Entfernung zum Asteroiden auszudrücken: D ( T ) 2 = D 0 2 + 2 D 0 v cos ( ϕ ) T + v 2 T 2 .

Wir suchen den Zeitpunkt, zu dem dieser Abstand gleich ist v 2 T 2 , Wo v ist die Geschwindigkeit, mit der eine Kugel aus dem Raumschiff geschossen wird. Daraus ergibt sich die quadratische Gleichung

( v 2 v 2 ) T 2 + 2 D 0 v cos ( ϕ ) T + D 0 2 = 0
Wie bei allen quadratischen Gleichungen hat diese zwei Lösungen:
T = D 0 v cos ϕ ± D 0 2 v 2 cos 2 ϕ D 0 2 ( v 2 v 2 ) v 2 v 2 = D 0 v 2 v 2 ( v cos ϕ ± v 2 v 2 ( 1 cos 2 ϕ ) )
Es gibt keine wirklichen Lösungen, wenn das Radikal v 2 v 2 ( 1 cos 2 ϕ ) ist negativ. Die beiden Lösungen sind identisch (eine doppelte Wurzel), wenn das Radikal Null ist. Es gibt zwei verschiedene reelle Wurzeln, wenn das Radikal positiv ist. Sie können den Asteroiden nicht treffen, wenn es keine reellen Lösungen gibt oder wenn beide reellen Lösungen negativ sind. Beachten Sie, dass eine negative reelle Lösung darstellt, dass der Asteroid zu diesem Zeitpunkt in der Vergangenheit eine Kugel auf Ihr Raumschiff geschossen hat, wobei diese Kugel Ihr Raumschiff gerade jetzt trifft.

Wenn es eine positive Lösung gibt T In Bezug auf die obige quadratische Gleichung sagt Ihnen dies, wohin Sie mit Ihrer Kugel zielen müssen. Zielen Sie einfach auf den Punkt, an dem sich der Asteroid zu diesem Zeitpunkt befinden wird.


Das Obige geht davon aus, dass sich der Asteroid mit konstanter Geschwindigkeit bewegt und das Raumschiff stationär ist. Das stellt ein Asteroidenfeld im leeren Raum dar, weit weg von jedem gravitativen Körper. Asteroidenfelder sind ein Nebeneffekt der Sternentstehung und der Bildung eines großen Planeten (z. B. Jupiter), der diese Asteroiden daran hindert, selbst einen Planeten zu bilden. Mit anderen Worten, Asteroiden umkreisen einen Stern und werden von einem oder mehreren Jupiterplaneten gestört. Die oben beschriebene Lösung mit konstanter Geschwindigkeit gilt nicht. Wenn Sie die Störungen durch die Jupiterplaneten ignorieren können, haben Sie im Wesentlichen Lamberts Problem mit zusätzlichen Einschränkungen. Dieser Wikipedia-Artikel fasst Lamberts Problem zusammen. Dieses nette kleine pdfvom Colorado Center for Astrodynamics Research (CCAR) beschreibt den Standardalgorithmus zur Lösung des Lambertschen Problems.