Inhaltsverzeichnis

Bahntypen — der Katalog der Umlaufbahnen

Die vierte Seite der Reihe. Startplätze, Trägerraketen und die Orbit-Matrix arbeiten mit vier Zielbahnen. Hier steht der vollständige Katalog: welche Bahntypen es gibt, welche Kennwerte std.astro.orbit dafür liefert — und wo die Grenze des Modells liegt.

Alle Zahlen sind gerechnet, das Programm in Abschnitt 4 erzeugt sie.

std.astro.orbit · std.astro.launch · Orbit-Matrix · std.astro (Übersicht)


1. Der Katalog

Bahn Form Neigung Wofür auslegbar?
LEO Kreis, 200–2000 km beliebig ab Startbreite Raumstationen, Konstellationen, Erdbeobachtung ja
ISS-Bahn Kreis, ~400 km 51.6° Internationale Raumstation ja
Tiangong-Bahn Kreis, ~387 km 41.47° chinesische Raumstation ja
Hubble-Bahn Kreis, ~510 km 28.4687° Weltraumteleskop, Wartungsanflüge ja
Polar Kreis, 300–1000 km ~90° vollständige Erdabdeckung, Aufklärung ja
SSO (sonnensynchron) Kreis, 600–800 km 97–99° rückläufig konstante Ortszeit am Boden, Erdbeobachtung ja ¹
MEO Kreis, 20 000–24 000 km 55–56° Navigation (GPS, Galileo) ja
GTO Ellipse, ~200 × 35 786 km Startbreite Übergangsbahn zum GEO ja
GEO Kreis, 35 786 km Kommunikation, Wetter ja
Molniya Ellipse, ~600 × 39 750 km 63.4° Nordabdeckung aus hoher Breite ja ²
Tundra Ellipse, ~27 350 × 44 220 km 63.4° wie Molniya, aber ein Umlauf pro Tag ja ²
HEO allgemein Ellipse, hohes Apogäum beliebig Wissenschaft, Frühwarnung ja
Frozen Orbit fast kreisförmig, Perigäum bei 90° frei wählbar langlebige Erdbeobachtung ohne Nachregelung ja ³
Repeat Ground Track Kreis, Höhe aus Wiederholzyklus beliebig wiederkehrende Aufnahmen desselben Streifens ja ⁴
Lagrange / Halo um L1…L5 Weltraumteleskope, Sonnenbeobachtung ja ⁵

¹ Neigung aus der Bahnhöhe über ASunSyncInclination — siehe Abschnitt 3.
² Neigung über ACriticalInclination; dass der Apsidendrift dort verschwindet, lässt sich mit AApsidalDrift nachweisen.
³ Exzentrizität über AFrozenEccentricity, Prüfung über AIsFrozen — siehe Abschnitt 4.
⁴ Bahnhöhe über ASmaFromRepeatCycle aus Umläufen und Tagen.
std.astro.cr3bp führt die fünf Punkte, die Jacobi-Konstante und seit #2001 auch Halo-Bahnen — bis rund 675 000 km Auslenkung (#2016).

2. Was heute herauskommt

KreisbahnenACircularSpeed und APeriod:

Bahn große Halbachse Bahngeschwindigkeit Umlaufzeit
LEO 400 km 6778 km 7669 m/s 92.6 min
SSO 700 km 7078 km 7504 m/s 98.8 min
MEO GPS (20 180 km) 26 558 km 3874 m/s 717.9 min
MEO Galileo (23 222 km) 29 600 km 3670 m/s 844.7 min
GEO 42 164 km 3075 m/s 1436.1 min

Die Umlaufzeiten sind zugleich die Probe: 717.9 min sind 11.965 h, der halbe Sterntag — GPS-Satelliten umrunden die Erde zweimal pro Sterntag, und genau das kommt heraus. 1436.1 min für den GEO sind der volle Sterntag.

EllipsenbahnenASemiMajorAxis, APeriod, AVisViva:

Bahn große Halbachse Umlaufzeit Geschwindigkeit im Perigäum im Apogäum
GTO 200 × 35 786 km 24 371 km 10.52 h 10 239 m/s 1597 m/s
Molniya 600 × 39 750 km 26 553 km 11.96 h 9961 m/s 1507 m/s
Tundra 27 353 × 44 219 km 42 164 km 23.93 h 3766 m/s 2510 m/s

Auch hier stimmt die Probe: Molniya trifft den halben Sterntag, Tundra den vollen. Und der Grund für beide Bahnen steht in der letzten Spalte — im Apogäum ist ein Molniya-Satellit mit 1507 m/s unterwegs, also fast siebenmal langsamer als im Perigäum. Er steht dort stundenlang fast still über dem Norden, und genau dafür wurde die Bahn entworfen.

Übergänge ab LEO 400 km:

Ziel dv
GEO (Hohmann) 3854.0 m/s
GPS-MEO 3414.9 m/s
Flucht (C3 = 0) 3176.4 m/s
Ebenenwechsel 28.5° im LEO 3775.3 m/s
Ebenenwechsel 28.5° im GEO 1513.7 m/s
Ebenenwechsel 90° im LEO 10 845 m/s
 
Die drei letzten Zeilen sind die wichtigste Lehre der Bahnmechanik in Zahlen. Eine Ebenenänderung von 28.5° kostet im LEO 3775 m/s — mehr als der komplette Weg zum GEO. Dieselbe Drehung im GEO kostet 1514 m/s, weil man dort viermal langsamer fliegt. Und ein Wechsel auf eine polare Bahn im LEO kostet 10 845 m/s, exakt so viel wie die Fluchtgeschwindigkeit von dort: bei 90° ist es billiger, die Erde zu verlassen, als die Bahnebene zu drehen.

3. Die Abplattung der Erde

Drei Bahnfamilien lassen sich mit einem kugelrunden Zentralkörper nicht erklären — sie existieren erst durch die Abplattung, in der Bahnmechanik als Koeffizient J2 geführt. Seit #1988 hat std.astro.orbit die dafür nötigen Funktionen: AJ2Earth, ANodalDrift, AApsidalDrift, ACriticalInclination und ASunSyncInclination.

Sonnensynchrone Bahnen. Eine SSO funktioniert, weil J2 die Bahnebene pro Tag mitdreht — genau so schnell, wie die Erde um die Sonne wandert. Die Solldrift ist damit 0.9856 Grad/Tag (360° je tropischem Jahr), und ASunSyncInclination dreht die Formel nach der Neigung um:

Bahnhöhe nötige Neigung erreichte Knotendrift
600 km 97.788° 0.9856 °/Tag
700 km 98.188° 0.9856 °/Tag
800 km 98.603° 0.9856 °/Tag

Die dritte Spalte ist die Gegenprobe: die berechnete Neigung wieder in ANodalDrift eingesetzt ergibt exakt die Solldrift zurück. Und der Wert erklärt die Neigung: die Drift muss positiv sein, also muss der Kosinus negativ sein — eine sonnensynchrone Bahn ist zwangsläufig rückläufig.

 
Die 97.5° auf der Orbit-Matrix sind ein Rundwert. Für die dort gerechnete Höhe von 700 km wären 98.188° richtig. Die Matrix rechnet den Energiebedarf, und der ändert sich zwischen 97.5° und 98.2° kaum — für eine Missionsauslegung wäre der Unterschied dagegen erheblich.

Molniya und Tundra. Beide fliegen bei 63.4°, weil dort die Apsidenlinie stehenbleibt: das Apogäum wandert nicht aus der Nordhalbkugel heraus. ACriticalInclination liefert 63.4349° — der Wert folgt aus 5·cos²i = 1, also der Bedingung, dass der Apsidendrift-Term verschwindet. AApsidalDrift beweist es:

Bahn Neigung Knotendrift Apsidendrift
Molniya (600 × 39 750 km) 63.4349° −0.1481 °/Tag 0.0000 °/Tag
Molniya, dieselbe Bahn 45.0° −0.2341 °/Tag 0.2483 °/Tag
Tundra (27 353 × 44 219 km) 63.4349° −0.0065 °/Tag 0.0000 °/Tag
ISS-Bahn (400 km) 51.6° −5.0023 °/Tag 3.7413 °/Tag
Hubble-Bahn (510 km) 28.4687° −6.6910 °/Tag 10.8991 °/Tag

Die zweite Zeile ist der Beleg: dieselbe Molniya-Bahn bei 45° statt 63.4° dreht ihr Perigäum um 0.25 Grad pro Tag — nach einem Jahr steht das Apogäum 90 Grad daneben, und die Bahn tut nicht mehr, wofür sie gebaut wurde. Bei der kritischen Neigung kommt exakt null heraus.

Die letzten beiden Zeilen zeigen, warum J2 im tiefen LEO überhaupt keine Randnotiz ist: die ISS-Bahnebene wandert fünf Grad pro Tag nach Westen. Wer ein Startfenster berechnet, rechnet in erster Linie gegen diese Drift.

Die übrigen Familien, die diese Seite anfangs als Lücken führte, sind inzwischen ebenfalls geschlossen — der nächste Abschnitt rechnet sie durch.

4. Wiederholbahnen, Frozen Orbits, Bahnverfall, Bodenspur, Librationspunkte

Fünf Familien, die der Katalog dieser Seite als Lücken auswies, sind seit #1993 bis #1997 abgedeckt — zwei davon in neuen Units.

Wiederholbahnen

Eine Wiederholbahn überfliegt nach k Umläufen in m Tagen wieder denselben Punkt. Die Bedingung verbindet die Nodalperiode (Umlaufzeit von Knoten zu Knoten, nicht von Perigäum zu Perigäum) mit der Erddrehung und der Knotendrift aus J2 — deshalb steht sie in std.astro.orbit und nicht in einer Geometrie-Unit.

Zyklus Bahnhöhe Nodalperiode
233 Umläufe / 16 Tage, i = 98.6° 700.3 km 98.90 min
431 Umläufe / 29 Tage, i = 98.2° 604.6 km

Der erste Fall ist der Landsat-Zyklus. ARepeatCycleFromSma rechnet zurück und liefert 14.5625 Umläufe pro Tag — genau 233/16.

Frozen Orbits

Ein Frozen Orbit hält seine Perigäumshöhe fest, ohne nachzuregeln. Dafür braucht es J3, den dritten zonalen Koeffizienten: J2 dreht das Perigäum, J3 zieht es zurück, und bei genau einer Exzentrizität heben sich beide auf.

Größe Wert
AJ3Earth() −2.532·10⁻⁶
AFrozenArgPerigee() 90° — das Perigäum steht über dem Nordpol
AFrozenEccentricity für 800 km, i = 98.6° 0.0010274
daraus Perigäum / Apogäum 792.6 km / 807.4 km

Knapp 15 km Unterschied zwischen tiefstem und höchstem Punkt — und die bleiben, wo sie sind. AIsFrozen prüft eine gegebene Bahn gegen diese Bedingung und bestätigt die eigene Rechnung.

Bahnverfall

ADecayPerRev und ADecayRate verbinden die Luftdichte mit dem ballistischen Koeffizienten aus std.astro.entry:

Bahn Abstieg je Umlauf je Tag
400 km, β = 50 −115.5 m −1796 m
300 km, β = 50 −17 831 m

Hundert Kilometer tiefer, zehnfacher Verfall — die Dichte steigt exponentiell, und das ist der Grund, warum die ISS regelmäßig angehoben wird.

Bodenspur

std.astro.groundtrack schließt das Glied zwischen dem Ortsvektor im Inertialsystem und der drehenden Erde: die Drehung um den Greenwich-Stundenwinkel. Vorne liegt std.astro.state, hinten std.geodesy.frames.

Probe am Julianischen Datum 2 460 000.5: GMST = 154.6019°. Ein Satellit, der dort im ECI genau auf der x-Achse steht, hat den Unterpunkt 0° Breite und −154.6019° Länge — der Betrag des Stundenwinkels, mit umgedrehtem Vorzeichen. Genau das ist die Drehung, und mehr ist der Unterschied zwischen den beiden Rahmen nicht.

Librationspunkte

std.astro.cr3bp steht neben dem übrigen Bestand, nicht darin: alle anderen Units rechnen im Zweikörperproblem, in dem Librationspunkte gar nicht existieren.

Punkt Abstand
Sonne–Erde L1 1 491 551 km von der Erde
Sonne–Erde L2 1 501 532 km von der Erde
Erde–Mond L1 58 019 km vom Mond
Hill-Radius der Erde 1 496 557 km

Die Massenverhältnisse dahinter: AMuEarthMoon() = 0.0121506, AMuSunEarth() = 3.003·10⁻⁶. L2 ist der Punkt, um den das James-Webb-Teleskop läuft — die 1.5 Millionen Kilometer sind die bekannte Zahl, und sie kommen hier aus der Rechnung.

Halo-Bahnen sind seit #2001 ebenfalls enthalten — über eine Fortsetzung statt über Richardsons Reihe. Für Sonne–Erde-L2 kommen bei 0.4 gamma Auslenkung 600 613 km und eine Umlaufzeit von 177.9 Tagen heraus; die Einzelheiten stehen auf std.astro.cr3bp.

Was bleibt: Halo-Bahnen oberhalb von rund 675 000 km (#2016), Strahlungsdruck, und ein Atmosphärenmodell, das die Dichte über der Höhe selbst liefert — ADecayRate bekommt sie heute als Parameter.

5. Die Programme

Teil A — die J2-Rechnungen aus Abschnitt 3:

unit main;
import std.astro.orbit;
import std.math;
import std.io;
import std.string;

fn f(v: f64, d: int64): pchar { return FloatToStr(v, d); }
fn G(rad: f64): f64 { return rad * 180.0 / Pi(); }
fn ProTag(radProSek: f64): f64 { return G(radProSek) * 86400.0; }

fn sso(hoeheKm: f64): void {
    var a: f64 := ARadiusEarth() + hoeheKm * 1000.0;
    var i: f64 := ASunSyncInclination(AMuEarth(), AJ2Earth(), ARadiusEarth(), a, 0.0);
    Print("SSO "); Print(f(hoeheKm, 0)); Print(" km: i = ");
    Print(f(G(i), 3)); Print(" Grad, Knotendrift ");
    Print(f(ProTag(ANodalDrift(AMuEarth(), AJ2Earth(), ARadiusEarth(), a, 0.0, i)), 4));
    PrintLn(" Grad/Tag");
}

fn drift(name: pchar, a: f64, e: f64, incGrad: f64): void {
    var i: f64 := incGrad * Pi() / 180.0;
    Print(name);
    Print(" | Knoten "); Print(f(ProTag(ANodalDrift(AMuEarth(), AJ2Earth(), ARadiusEarth(), a, e, i)), 4));
    Print(" Grad/Tag | Apsiden "); Print(f(ProTag(AApsidalDrift(AMuEarth(), AJ2Earth(), ARadiusEarth(), a, e, i)), 4));
    PrintLn(" Grad/Tag");
}

fn main(): int64 {
    PrintLn(StrConcat("kritische Neigung:          ", StrConcat(f(G(ACriticalInclination()), 4), " Grad")));
    PrintLn(StrConcat("rueckläufige Loesung:       ", StrConcat(f(G(ACriticalInclinationRetro()), 4), " Grad")));
    PrintLn(StrConcat("sonnensynchrone Solldrift:  ", StrConcat(f(ProTag(ASunSyncDrift()), 4), " Grad/Tag")));
    PrintLn("");
    sso(600.0);
    sso(700.0);
    sso(800.0);
    PrintLn("");
    PrintLn("Bahn              | Knotendrift | Apsidendrift");
    drift("LEO 400 km  i=51.6", ARadiusEarth() + 400000.0, 0.0, 51.6);
    drift("Hubble 510  i=28.5", ARadiusEarth() + 510200.0, 0.0, 28.4687);
    drift("Molniya     i=63.4", 26553000.0, 0.7402, 63.4349);
    drift("Molniya     i=45.0", 26553000.0, 0.7402, 45.0);
    drift("Tundra      i=63.4", 42164000.0, 0.2,    63.4349);
    return 0;
}

Ausgabe:

kritische Neigung:          63.4349 Grad
rueckläufige Loesung:       116.5651 Grad
sonnensynchrone Solldrift:  0.9856 Grad/Tag

SSO 600 km: i = 97.788 Grad, Knotendrift 0.9856 Grad/Tag
SSO 700 km: i = 98.188 Grad, Knotendrift 0.9856 Grad/Tag
SSO 800 km: i = 98.603 Grad, Knotendrift 0.9856 Grad/Tag

Bahn              | Knotendrift | Apsidendrift
LEO 400 km  i=51.6 | Knoten -5.0023 Grad/Tag | Apsiden 3.7413 Grad/Tag
Hubble 510  i=28.5 | Knoten -6.6910 Grad/Tag | Apsiden 10.8991 Grad/Tag
Molniya     i=63.4 | Knoten -0.1481 Grad/Tag | Apsiden 0.0000 Grad/Tag
Molniya     i=45.0 | Knoten -0.2341 Grad/Tag | Apsiden 0.2483 Grad/Tag
Tundra      i=63.4 | Knoten -0.0065 Grad/Tag | Apsiden 0.0000 Grad/Tag

Teil B — die Bahnkennwerte aus Abschnitt 2:

unit main;
import std.astro.orbit;
import std.math;
import std.io;
import std.string;

fn f(v: f64, d: int64): pchar { return FloatToStr(v, d); }
fn Grad(g: f64): f64 { return g * Pi() / 180.0; }

// Kreisbahn: Hoehe in km
fn kreis(name: pchar, hoeheKm: f64): void {
    var r: f64 := ARadiusEarth() + hoeheKm * 1000.0;
    Print(name);
    Print(" | a "); Print(f(r / 1000.0, 0));
    Print(" km | v "); Print(f(ACircularSpeed(AMuEarth(), r), 0));
    Print(" m/s | T "); PrintLn(StrConcat(f(APeriod(AMuEarth(), r) / 60.0, 1), " min"));
}

// Ellipse: Perigaeums- und Apogaeumshoehe in km
fn ellipse(name: pchar, hpKm: f64, haKm: f64): void {
    var rp: f64 := ARadiusEarth() + hpKm * 1000.0;
    var ra: f64 := ARadiusEarth() + haKm * 1000.0;
    var a:  f64 := (rp + ra) / 2.0;
    Print(name);
    Print(" | a "); Print(f(a / 1000.0, 0));
    Print(" km | T "); Print(f(APeriod(AMuEarth(), a) / 3600.0, 2));
    Print(" h | vp "); Print(f(AVisViva(AMuEarth(), rp, a), 0));
    Print(" | va "); PrintLn(f(AVisViva(AMuEarth(), ra, a), 0));
}

fn main(): int64 {
    PrintLn("-- Kreisbahnen --");
    kreis("LEO 400 km      ", 400.0);
    kreis("SSO 700 km      ", 700.0);
    kreis("MEO GPS 20180 km", 20180.0);
    kreis("MEO Galileo     ", 23222.0);
    kreis("GEO             ", 35786.0);
    PrintLn("");
    PrintLn("-- Ellipsenbahnen --");
    ellipse("GTO 200 x 35786  ",  200.0, 35786.0);
    ellipse("Molniya 600x39750",  600.0, 39750.0);
    ellipse("Tundra 27353x44219", 27353.0, 44219.0);
    PrintLn("");
    PrintLn("-- Uebergaenge ab LEO 400 km --");
    var rLeo: f64 := ARadiusEarth() + 400000.0;
    PrintLn(StrConcat("-> GEO (Hohmann):    ", f(AHohmannDv(AMuEarth(), rLeo, 42164000.0), 1)));
    PrintLn(StrConcat("-> GPS-MEO:          ", f(AHohmannDv(AMuEarth(), rLeo, ARadiusEarth()+20180000.0), 1)));
    PrintLn(StrConcat("-> Fluchtgeschw.:    ", f(AEscapeSpeed(AMuEarth(), rLeo), 1)));
    PrintLn(StrConcat("-> Flucht-dv ab LEO: ", f(AEscapeDv(AMuEarth(), rLeo, 0.0), 1)));
    PrintLn(StrConcat("Transferzeit LEO->GEO: ", StrConcat(f(AHohmannTime(AMuEarth(), rLeo, 42164000.0) / 3600.0, 2), " h")));
    PrintLn("");
    PrintLn("-- Ebenenaenderung --");
    PrintLn(StrConcat("28.5 Grad im LEO:  ", f(APlaneChangeDv(ACircularSpeed(AMuEarth(), rLeo), Grad(28.5)), 1)));
    PrintLn(StrConcat("28.5 Grad im GEO:  ", f(APlaneChangeDv(ACircularSpeed(AMuEarth(), 42164000.0), Grad(28.5)), 1)));
    PrintLn(StrConcat("90 Grad im LEO:    ", f(APlaneChangeDv(ACircularSpeed(AMuEarth(), rLeo), Grad(90.0)), 1)));
    return 0;
}

Ausgabe:

-- Kreisbahnen --
LEO 400 km       | a 6778 km | v 7669 m/s | T 92.6 min
SSO 700 km       | a 7078 km | v 7504 m/s | T 98.8 min
MEO GPS 20180 km | a 26558 km | v 3874 m/s | T 717.9 min
MEO Galileo      | a 29600 km | v 3670 m/s | T 844.7 min
GEO              | a 42164 km | v 3075 m/s | T 1436.1 min

-- Ellipsenbahnen --
GTO 200 x 35786   | a 24371 km | T 10.52 h | vp 10239 | va 1597
Molniya 600x39750 | a 26553 km | T 11.96 h | vp 9961 | va 1507
Tundra 27353x44219 | a 42164 km | T 23.93 h | vp 3766 | va 2510

-- Uebergaenge ab LEO 400 km --
-> GEO (Hohmann):    3854.0
-> GPS-MEO:          3414.9
-> Fluchtgeschw.:    10845.0
-> Flucht-dv ab LEO: 3176.4
Transferzeit LEO->GEO: 5.29 h

-- Ebenenaenderung --
28.5 Grad im LEO:  3775.3
28.5 Grad im GEO:  1513.7
90 Grad im LEO:    10845.0

Teil C — die fünf Familien aus Abschnitt 4:

unit main;
import std.astro.orbit;
import std.astro.groundtrack;
import std.astro.cr3bp;
import std.astro.state;
import std.math;
import std.io;
import std.string;

fn f(v: f64, d: int64): pchar { return FloatToStr(v, d); }
fn G(r: f64): f64 { return r * 180.0 / Pi(); }
fn Rad(g: f64): f64 { return g * Pi() / 180.0; }

fn main(): int64 {
    var w: f64 := 0.000072921158553;

    PrintLn("-- Wiederholbahnen (#1993) --");
    var a1: f64 := ASmaFromRepeatCycle(AMuEarth(), AJ2Earth(), ARadiusEarth(), w, 233.0, 16.0, 0.0, Rad(98.6));
    PrintLn(StrConcat("233 Umlaeufe / 16 Tage: Hoehe ", StrConcat(f((a1-ARadiusEarth())/1000.0, 1), " km")));
    PrintLn(StrConcat("  Nodalperiode          ", StrConcat(f(ANodalPeriod(AMuEarth(), AJ2Earth(), ARadiusEarth(), a1, 0.0, Rad(98.6))/60.0, 2), " min")));
    PrintLn(StrConcat("  Probe: Umlaeufe/Tag   ", f(ARepeatCycleFromSma(AMuEarth(), AJ2Earth(), ARadiusEarth(), w, a1, 0.0, Rad(98.6)), 4)));
    var a2: f64 := ASmaFromRepeatCycle(AMuEarth(), AJ2Earth(), ARadiusEarth(), w, 431.0, 29.0, 0.0, Rad(98.2));
    PrintLn(StrConcat("431 Umlaeufe / 29 Tage: Hoehe ", StrConcat(f((a2-ARadiusEarth())/1000.0, 1), " km")));

    PrintLn("");
    PrintLn("-- Frozen Orbits (#1996) --");
    PrintLn(StrConcat("J3 der Erde:           ", f(AJ3Earth(), 9)));
    PrintLn(StrConcat("eingefrorenes Argument ", StrConcat(f(G(AFrozenArgPerigee()), 1), " Grad")));
    var aF: f64 := ARadiusEarth() + 800000.0;
    var eF: f64 := AFrozenEccentricity(AJ2Earth(), AJ3Earth(), ARadiusEarth(), aF, Rad(98.6));
    PrintLn(StrConcat("e bei 800 km, i=98.6:  ", f(eF, 7)));
    PrintLn(StrConcat("  Perigaeum            ", StrConcat(f((aF*(1.0-eF)-ARadiusEarth())/1000.0, 1), " km")));
    PrintLn(StrConcat("  Apogaeum             ", StrConcat(f((aF*(1.0+eF)-ARadiusEarth())/1000.0, 1), " km")));

    PrintLn("");
    PrintLn("-- Bahnverfall (#1994) --");
    PrintLn(StrConcat("400 km, beta=50: je Umlauf ", StrConcat(f(ADecayPerRev(0.00000000002, 50.0, ARadiusEarth()+400000.0), 1), " m")));
    PrintLn(StrConcat("                 je Tag    ", StrConcat(f(ADecayRate(AMuEarth(), 0.00000000002, 50.0, ARadiusEarth()+400000.0)*86400.0, 0), " m")));
    PrintLn(StrConcat("300 km, beta=50: je Tag    ", StrConcat(f(ADecayRate(AMuEarth(), 0.0000000002, 50.0, ARadiusEarth()+300000.0)*86400.0, 0), " m")));

    PrintLn("");
    PrintLn("-- Bodenspur (#1995) --");
    var jd: f64 := 2460000.5;
    var gmst: f64 := AGmst(jd);
    PrintLn(StrConcat("GMST am JD 2460000.5:  ", StrConcat(f(G(gmst), 4), " Grad")));
    var eci: AVec3 := AVec(6778137.0, 0.0, 0.0);
    var ecef: AVec3 := AEciToEcef(eci, gmst);
    PrintLn(StrConcat("Unterpunkt Breite:     ", StrConcat(f(G(ASubPointLatitude(eci)), 4), " Grad")));
    PrintLn(StrConcat("Unterpunkt Laenge:     ", StrConcat(f(G(ASubPointLongitude(eci, gmst)), 4), " Grad")));
    PrintLn(StrConcat("Hoehe ueber Kugelerde: ", StrConcat(f(ASubPointAltitude(eci, ARadiusEarth())/1000.0, 1), " km")));

    PrintLn("");
    PrintLn("-- Librationspunkte (#1997) --");
    var muEM: f64 := AMuEarthMoon();
    var muSE: f64 := AMuSunEarth();
    PrintLn(StrConcat("mu Erde-Mond:  ", f(muEM, 7)));
    PrintLn(StrConcat("mu Sonne-Erde: ", f(muSE, 9)));
    var l1: AVec3 := ALagrange1(muSE);
    var l2: AVec3 := ALagrange2(muSE);
    PrintLn(StrConcat("Sonne-Erde L1, Abstand zur Erde: ", StrConcat(f(ADistanceToSecondary(l1, muSE, 149597870700.0)/1000.0, 0), " km")));
    PrintLn(StrConcat("Sonne-Erde L2, Abstand zur Erde: ", StrConcat(f(ADistanceToSecondary(l2, muSE, 149597870700.0)/1000.0, 0), " km")));
    PrintLn(StrConcat("Erde-Mond L1,  Abstand zum Mond: ", StrConcat(f(ADistanceToSecondary(ALagrange1(muEM), muEM, 384400000.0)/1000.0, 0), " km")));
    PrintLn(StrConcat("Hill-Radius der Erde:            ", StrConcat(f(AHillRadius(149597870700.0, muSE)/1000.0, 0), " km")));
    return 0;
}

Ausgabe:

-- Wiederholbahnen (#1993) --
233 Umlaeufe / 16 Tage: Hoehe 700.3 km
  Nodalperiode          98.90 min
  Probe: Umlaeufe/Tag   14.5625
431 Umlaeufe / 29 Tage: Hoehe 604.6 km

-- Frozen Orbits (#1996) --
J3 der Erde:           -0.000002532
eingefrorenes Argument 90.0 Grad
e bei 800 km, i=98.6:  0.0010274
  Perigaeum            792.6 km
  Apogaeum             807.4 km

-- Bahnverfall (#1994) --
400 km, beta=50: je Umlauf -115.5 m
                 je Tag    -1796 m
300 km, beta=50: je Tag    -17831 m

-- Bodenspur (#1995) --
GMST am JD 2460000.5:  154.6019 Grad
Unterpunkt Breite:     0.0000 Grad
Unterpunkt Laenge:     -154.6019 Grad
Hoehe ueber Kugelerde: 400.0 km

-- Librationspunkte (#1997) --
mu Erde-Mond:  0.0121506
mu Sonne-Erde: 0.000003003
Sonne-Erde L1, Abstand zur Erde: 1491551 km
Sonne-Erde L2, Abstand zur Erde: 1501532 km
Erde-Mond L1,  Abstand zum Mond: 58019 km
Hill-Radius der Erde:            1496557 km

6. Kurzantwort auf die Ausgangsfrage