cb-blog sägen-software-systeme HOME

Software··7 Min. Lesezeit

Berechnung Sonnenfinsternis mit Freepascal/Lazarus

Ein kleines Programm, das Sonnenfinsternisse berechnet und auf einer animierten 3D-Erde zeigt – geschrieben in Free Pascal mit Lazarus, lauffähig unter Linux, Windows und macOS.

Die ringförmige Finsternis vom 6. Februar 2027 – rot die Zentrallinie über Südamerika und den Atlantik

Schnellstart

Beim Start sucht das Programm selbständig die Finsternisse der nächsten Jahre und wählt die nächste bevorstehende aus. Danach:

  1. Ort setzen – Stadt aus der Liste wählen oder doppelt auf den Globus klicken.
  2. Start drücken – der Schatten wandert über die Erde, links unten läuft die Sonnensichel mit.
  3. Ziehen und zoomen – Maus ziehen dreht den Globus, das Rad zoomt.

Was das Fenster zeigt

Der Globus. Die Helligkeit jedes einzelnen Bildpunktes entspricht dem dort tatsächlich verdeckten Anteil der Sonnenscheibe. Der Kernschatten ist der dunkle Fleck, der weiche Verlauf ringsum der Halbschatten; auch die Nachtseite ist zu sehen. Die rote Linie ist die Zentrallinie, also der Weg des Kernschattens über die Erde. Das gelbe Fadenkreuz markiert den Schatten selbst, das grüne Kreuz den Beobachtungsort.

Der Einschub unten links zeigt den Blick zur Sonne vom Beobachtungsort aus und läuft mit.

Die Liste rechts oben enthält alle Finsternisse im gewählten Jahresbereich mit Zeitpunkt der grössten Phase, Art und Grösse. Einträge mit dem Zusatz (ohne Zentrallinie) sind rein partiell – der Kernschatten verfehlt die Erde vollständig. Es gibt dann keine rote Linie und nirgends Totalität.

Der Bericht rechts unten nennt zuerst die globalen Daten und darunter, was am Beobachtungsort passiert: erster Kontakt C1, Maximum, letzter Kontakt C4, bei Totalität auch C2 und C3 mit Dauer, dazu Bedeckungsgrad, Grösse und Sonnenhöhe.

Bedienung im Einzelnen

  • Suchen: Jahresbereich eintragen, Suchen drücken. Bis zu 60 Jahre auf einmal, dauert ein paar Sekunden.
  • Beobachtungsort: Stadt aus der Liste – wird sofort übernommen – oder Breite, Länge, Höhe und Zeitzone von Hand. Übernommen wird mit Enter im Feld oder mit Rechnen.
  • Eigene Orte: Ort merken … fragt nach einem Namen und legt den eingestellten Ort mitsamt Höhe und Zeitzone ab.
  • Zeit: Der Schieberegler läuft über das Zeitfenster der gewählten Finsternis, vom ersten bis zum letzten Halbschattenkontakt. Start lässt die Zeit laufen, wahlweise 30- bis 300-fach.
  • Kamera folgt Schatten hält den Kernschatten während der Animation im Bild.

Eigene Orte landen in sofi.ini neben der Programmdatei. Das Format ist absichtlich lesbar – ein Ort je Zeile, Dezimalpunkt fest, Felder: Breite, Länge, Höhe in Metern, Zeitzone in Stunden.

[Orte]
Zermatt=46.0207;7.7491;1608;1
Hütte Furka=46.5723;8.4152;2436;1

Weltkarte nachrüsten

Von Haus aus zeigt der Globus Gradnetz, Tag-Nacht-Grenze, 65 Städte mit echten Koordinaten und die eigenen Orte – aber keine Küstenlinien. Legt man eine equirektangulare Weltkarte als earth.jpg oder earth.png (max. 2048×1024) neben die Programmdatei, wird sie automatisch als Textur verwendet. Die gemeinfreie NASA-Aufnahme Blue Marble eignet sich gut.

Wie gerechnet wird

Der Schatten – Pixel für Pixel

Üblich sind Besselsche Elemente. Dieses Programm geht einen direkteren Weg: Für jeden Bildpunkt wird der Sehstrahl mit dem Erdellipsoid geschnitten und an diesem Ort der topozentrische Winkelabstand von Sonne und Mond samt beider Scheibenradien ausgewertet. Der überdeckte Flächenanteil ergibt die Helligkeit.

Kernschatten, weicher Halbschattenverlauf und die ringförmige Phase entstehen dadurch von selbst – auch am Terminator und bei streifenden Finsternissen, wo Näherungen gern zusammenbrechen. Das kostet Rechenzeit, aber es gibt keinen Sonderfall, der schiefgehen kann.

Die Örter von Mond und Sonne

Zwei halbanalytische Theorien, gezielt gekürzt:

KörperTheorieTerme vollständigTerme verwendet
MondELP/MPP02 (Chapront & Francou 2002), historical mode, an DE405/DE406 angepasst35 9013 845
SonneVSOP87A für die Erde, rechtwinklig in J20003 5381 214

Die Kürzung ist gemessen, nicht geschätzt: Gegenüber den vollständigen Reihen wächst der Fehler in der Richtung Mond gegen Sonne von 0,051 auf 0,057 Bogensekunden – rund 110 m auf der Erdoberfläche und damit belanglos.

Von den Reihen zum wahren Äquator des Datums:

J2000-Ekliptik → J2000-Äquator → Präzession (Lieske 1977)
               → Nutation (IAU 1980, alle 106 Terme)

Für die Schattengeometrie zählt die Richtung, aus der das Licht kommt. Deshalb wird jeder Körper an seinem Ort zur Aussendezeit genommen: Mond rund 1,3 Sekunden, Sonne rund 499 Sekunden zurück. Die jährliche Aberration wirkt auf beide gleich und hebt sich in der Relativgeometrie heraus – sie wird deshalb bewusst nicht angebracht. Wer mit veröffentlichten scheinbaren Örtern vergleicht, findet bei beiden Körpern denselben Versatz von etwa 20 Bogensekunden, in der Differenz aber nicht.

ΔT – warum die Uhr wichtiger ist als der Himmel

Die Erde dreht sich nicht gleichmässig. ΔT ist der Unterschied zwischen der gleichmässigen Zeit, in der die Himmelsmechanik rechnet, und der Weltzeit, die an der Erddrehung hängt. Für eine Finsternis heisst das schlicht: ΔT entscheidet, welcher Längengrad gerade unter dem Schatten steht.

Ab 1972 nimmt das Programm die gemessenen Werte aus den Erdrotationsdaten des IERS:

ΔT = 32,184 s + (TAI − UTC) − (UT1 − UTC)

Davor gelten die an historische Beobachtungen angepassten Näherungen von Espenak und Meeus, danach eine Fortschreibung mit der mittleren Steigung der letzten zwanzig Jahre.

💡 Kein Detail: Die gängige Espenak-Formel liefert für 2026 rund 75 Sekunden, gemessen werden 69,1. Sie wurde um 2005 angepasst und schrieb die damalige Verlangsamung der Erdrotation fort – die seither ausgeblieben ist. Sechs Sekunden bedeuten etwa 2,8 km Versatz der Spur. Der Bericht weist ΔT und dessen Herkunft deshalb ausdrücklich aus.

Gegenprüfungen

Gegen die JPL-Ephemeride DE421

An Stützpunkten zwischen 1900 und 2100:

GrösseAbweichung
Mond, Richtung0,04–0,08″
Mond, Entfernung0,03 km
Sonne, Richtung0,05–0,10″
Mond gegen Sonne0,002–0,038″ – 4 bis 75 m auf der Erde

Die letzte Zeile ist die entscheidende: Nur die Relativgeometrie bestimmt, wo der Schatten hinfällt. Ein gemeinsamer Versatz beider Körper hebt sich heraus.

Gegen den Katalog von Fred Espenak

EclipseWise, 21st Century Canon auf JPL DE405, für die totale Finsternis vom 12. August 2026 – gerechnet mit demselben ΔT von 72,4 s und demselben Mondradius k = 0,272281:

GrösseberechnetKatalog
Grösste Phase17:45:53 UT17:45:53,3
Gamma0,89770,8977
Grösse1,03861,0386
Ort der grössten Phase65,223° / −25,229°65,223° / −25,228°
P115:34:13 UT15:34:11,4
U116:58:06 UT16:58:05,6
U418:34:05 UT18:34:05,3
P419:57:55 UT19:57:56,8
Dauer der Totalität dort138,1 s138,2 s
Breite der Zone dort298 km294 km

Dazu die Örter zum Zeitpunkt 17:47:05,8 TD: Horizontalparallaxe des Mondes 3585,13″ gegen 3585,10″, die der Sonne 8,68″ gegen 8,70″, Abstand Mond minus Sonne in Deklination 2933,98″ gegen 2934,00″.

Fazit: Zeiten unter einer Sekunde, Ortslage etwa 50 Meter.

Eine Konventionsfrage: der Mondradius

Voreingestellt ist der IAU-Mittelwert k = 0,2725076. Espenak rechnet den Kernschatten mit k = 0,272281, was das Randgebirge des Mondes pauschal berücksichtigt. Der Unterschied ist klein, aber sichtbar: Mit dem IAU-Wert ergeben sich für den 12. August 2026 eine Grösse von 1,0395 und 141,2 s Totalität, mit Espenaks Wert 1,0386 und 138,1 s – exakt die Katalogwerte. Über SetLunarK lässt sich umschalten, K_MOON_UMBRA steht bereit.

Das ist kein Fehler auf einer der beiden Seiten, sondern die Frage, welchen Mondrand man meint.

Was die Genauigkeit heute begrenzt

Die Ephemeriden sind es nicht mehr. Es bleiben:

  • Das Randprofil des Mondes. Der Mond wird als Kugel behandelt. Berge und Täler am Rand verschieben die Kontaktzeiten um 1–3 Sekunden und die Ränder der Totalitätszone um einige Kilometer – heute der grösste Posten.
  • ΔT in der Zukunft. Jenseits der Tabelle ist die Fortschreibung eine Vermutung – mit ein bis zwei Sekunden Unsicherheit pro Jahrzehnt ist zu rechnen.
  • Das Gelände. Der Schatten fällt auf das Ellipsoid, nicht auf das echte Relief. Bei tiefstehender Sonne macht 1 km Höhe mehrere Kilometer aus.
  • Refraktion ist nicht modelliert; nahe am Horizont verfälscht das die Sonnenhöhe um gut ein halbes Grad.

Für Reiseplanung und zum Anschauen ist das reichlich. Wer sich an den äussersten Rand der Totalitätszone stellen will, sollte trotzdem einen professionellen Katalog heranziehen.

Übersetzen & Projektaufbau

Mit der Lazarus-IDE: sofi.lpi öffnen, F9. Unter macOS erzeugt Lazarus neben der Programmdatei ein Programmpaket sofi.app (dafür steht <UseAppBundle Value="True"/> in sofi.lpi) – gestartet werden muss das Paket, nicht sofi.

DateiInhalt
sofi.lpr, sofi.lpiProgramm- und Projektdatei
umain.pas, umain.lfmBedienoberfläche
uglobe.pasSoftware-3D-Renderer der Erde
ueclipse.pasSchattengeometrie, Finsternissuche, Ortsumstände
uastro.pasZeitrechnung, ΔT, Präzession, Nutation, Ephemeridenkette
uelp.pasMondtheorie ELP/MPP02
uvsop.pasErdbahn nach VSOP87A
sofi.inieigene Orte, editierbar

Herkunft der Daten

  • ELP/MPP02: J. Chapront und G. Francou, Observatoire de Paris 2002; A&A 404, 735 (2003). Koeffizienten aus der Aufbereitung von Yuk Tung Liu (github.com/ytliu0/ElpMpp02, GPL v3).
  • VSOP87: P. Bretagnon und G. Francou, A&A 202, 309 (1988), frei verfügbar über den VizieR-Katalog des CDS.
  • Nutation IAU 1980: Reihe von Wahr, Tabellenwerte in der Fassung der IAU-SOFA/ERFA-Bibliothek.
  • ΔT: IERS Earth Orientation Parameters, Serie EOP 20 C04.
  • Prüfwerte: JPL DE421 sowie die Kataloge von Fred Espenak (eclipsewise.com, eclipse.gsfc.nasa.gov).

Quellcode & Lizenz

Der komplette Quellcode ist auf Codeberg verfügbar: Sonnenfinsternis-Simulator auf Codeberg. Da die Mond-Koeffizienten aus einer GPL-v3-Quelle stammen, gilt für die Weitergabe des Programms die GPL v3.

Dateien zum Projekt

ZIPSofi-mainZIP · 4.3 MBDownload

Zur privaten Nutzung / keine Garantie auf berechneten Resultate