Allgemein Literatur Links Bugs Versionen |
Allgemein
Diese Komponente besteht aus eine Sammlung von Funktionen zur Berechnung der Mondphasen
sowie anderer astronomischer und kalendarischer Daten. Neben diesen nicht-visuellen
Funktionen gibt es auch eine visuelle TMoon-Komponente, die die Mondphase zu einer
beliebigen Zeit anzeigt.
Die Komponente arbeitet mit allen Delphi-Versionen von 1 bis 5, und wahrscheinlich auch mit
dem C++ Builder (letztere kann ich nicht überprüfen, da ich kein C++ spreche); die
nicht-visuellen Funktionen dürften auch unter Kylix problemlos arbeiten.
Der komplette Quellcode liegt bei, ebenso wie eine (englische) Online-Hilfe,
und sie ist Postcard-Freeware.
Download TMoon (ZIP-Archiv, 240kB)
Ebenfalls mit dabei ist der Quellcode für eine Beispiel-Applikation, eine erweiterte
Version des Moontool - ursprünglich unter X-Windows (Unix) entwickelt, und dann von
John Walker nach Windows portiert. Meine Version hat eine ganze Reihe zusätzlicher Features
gegenüber dem Original.
Diese Programm kann natürlich auch ohne Delphi oder TMoon benutzt werden, ein komplettes
Installationspaket kann heruntergeladen werden.
Download Moontool (ZIP-Archiv, 900kB)
Astronomische Algorithmen von Jean Meeus 2. Auflage (1994), J.A. Barth, ISBN 3335004000 | Die Quelle der meisten benutzten Algorithmen. Dies Buch enthält eine große Anzahl von verschiedenen astronomischen Algorithmen. Was fehlt ist die Theorie hinter den Algorithmen, aber dann hätte das Buch tausende von Seiten haben müssen. So sind die allermeisten Algorithmen große Polynomreihen, die mit den heutigen Computern schnell berechnet werden können; außerdem sind Hinweise zur Implementierung gegeben. Leider ist die deutsche Ausgabe vergriffen, nur die englische Ausgabe (2nd Edition) ist im Astro-Shop erhältlich. Die beiden Bücher Mathematical Astronomy Morsels und More Mathematical Astronomy Morsels sind gewissermaßen ein Anhang zu diesem Buch, sie enthalten viele interessante oder auch überraschende Ergebnisse von astronomischen Algorithmen, wie zum Beispiel daß Ostern am häufigsten auf den 19. April fällt. | |
Astronomie mit dem Personal Computer von Oliver Montenbruck und Thomas Pfleger 3. Auflage (1999), Springer, ISBN 3540662189 | Eine Alternative zu dem Buch von Meeus, auch wenn es nur etwa halb zu stark ist und dementsprechend auch wenig umfangreich ist. So sind auch die bei der Mondposition oder den Planeten vorgestellten Polynomentwicklungen weniger lang und damit ungenauer, auch wenn die Genauigkeit für die meisten Anwendungen ausreichend ist - Ausnahme ist nur die Finsternis-Berechnung. Weitere Informationen zu dem Buch gibt es auch auf der Verlags-Webseite. | |
Explanatory Supplement to the Astronomical Almanac von Kenneth Seidelmann Rev. Edition (1992), University Science Books, ISBN 0935702687 | Während die beiden vorherigen Bücher die Algorithmen zur Berechnung verschiedener astronomischen Daten enthalten, ist dieses Buch mehr der theoretische Hintergrund für diese - die Unterschiede der verschiedenen Zeitsysteme, der Koordinatensysteme, Kalender, aber auch die geometrischen Details wie Finsternisse berechnet werden, uvm. Viele der Details die bei den Algorithmen vorausgesetzt werden, oder nur mit einem Nebensatz erwähnt werden, sind hier ausführlich hergeleitet. Aber der leider sehr hohe Preis ist es wohl nur etwas für denjenigen, denen die vorherigen Bücher nicht ausreichen, und die hinreichende mathematische Kenntnisse haben. Kapitel 12 über Kalender ist (allerdings unvollständig) auch online verfügbar. | |
Calendrical Calculations - The Millennium Edition von Edward M. Reingold, Nachum Dershowitz Revised edition (2001), Cambridge University Press, ISBN 0521777526 |
Dies Buch ist ein richtiges mathematisch-algorithmische Fachbuch, welches die für die verschiedensten behandelten Kalender nötigen Berechnungen in mathematisch exakte Algorithmen verpackt, und diese erklärt. Bei diesem Ansatz bleiben natürlich die kulturellen und historischen Aspekte der Kalender weitestgehend außen vor, diese würden den Rahmen des Buches sprengen. | |
Standard C Date/Time Library von Lance Latham 1. Auflage 1998, R&D Books, ISBN 0879304960 |
Ein sehr ausführliches Buch mit allen möglichen Algorithmen zu Kalendern, von historischen Kalendern bis hin zu einem möglichen Kalender für den Mars. Die Quelltexte sind in C, aber lassen sich leicht nach Pascal übersetzen, außerdem sind sie ausführlich erklärt. | |
Der jüdische Kalender von Ludwig Basnizki 1 Auflage (1988), Jüdischer Verlag, ISBN 3633541543 |
Eine kurze Einführung in den jüdischen Kalender und dessen Besonderheiten als lunisolarer Kalender im Gegensatz zum solaren Gregorianischen Kalender. Das Buch wurde bereits 1938 geschrieben (der Autor konnte 1939 nach Südamerika fliehen), daß es heute noch in einer Neuauflage erhältlich ist spricht für seine Qualität. Aber leider ist das Buch wirklich nur eine Einführung, die Informationen zur tatsächlichen Berechung wie z.B. eine Beschreibung des Gausschen Pessah-Algorithmus fehlen. | |
Mapping Time von
E.G. Richards New edition (1999), Oxford Paperbacks, ISBN 0192862057 |
Dies Buch ist eine Mischung aus einer popularwissenschaftlichen Beschreibung einer Vielzahl von Kalendern aus aller Welt, sowie den algorithmischen Grundlagen, die für kalendarische Berechnungen und Umrechnungen der Kalender nötig sind. Während die vorherigen Bücher zum Teil sehr technisch sind, und die beiden folgenden eher einfach zu lesen sind, ist dies Buch genau in der Mitte, es erwähnt die interessante Geschichte und die kulturellen Hintergründe, enthält aber auch die Algorithmen um diese dann auch selber anzuwenden; außerdem ist es nicht so sehr auf den westlichen Kalender fokussiert. Die Algorithmen als auch Errata gibt es auf der Webseite des Autors. | |
Marking Time von Duncan Steel 1 edition (December 8, 2000), John Wiley & Sons, ISBN 0471404217 |
Eine flüssig geschriebene und doch gut recherchierte Beschreibung der Geschichte des christlichen Kalenders, von den verschiedenen Kalendern der Römer mit der großen Reform von Julius Cäsar, die Osterdiskussion der Frühkirche, die gregorianische Reform und konkurrierende Reformansätze. Eine deutsche Ausgabe gibt es leider nicht. | |
Calendar von David Ewing Duncan Reissue (Mai 1999), 4th Estate, ISBN 1857029798 |
Ein weiteres populärwissenschhaftliches Buch über die Geschichte des westlichen Kalenders, sehr ähnlich dem vorherigen. Die historischen und wissenschaftlichen Entwicklungen, die zur Kalenderreform 1582 geführt haben sind etwas ausführlicher dargestellt, dafür sind im vorherigen Buch andere Teile ausführlicher. Auch hier gibt es keine deutsche Ausgabe. | |
Ein Tag zuviel - Aus der Geschichte des Kalenders von
Hannes E. Schlag 1998, Königshausen & Neumann, ISBN 3826015312 |
Ausführliche Beschreibung der astronomischen Grundlagen des Kalenders, der Geschichte der gregorianischen Kalenders als auch einiger Kalender anderer Kulturen. Schwerpunkt dabei ist die Argumentation für eine Kalenderreform zum sogenannten Weltkalender, wie er zwischen 1930 und 1950 aktiv propagiert wurde. | |
Kalender der Welt - Eine Reise durch Zeiten und Kulturen von Margo Westrheim 1.Auflage 1999, Herder, ISBN 3451047802 |
Eine kurze Reise um die Welt zu den Kalendern der verschiedenen Kulturen der Vergangenheit und Gegenwart, wobei der Schwerpunkt auf den Feiertagen der jeweiligen Kultur liegt. Für mehr als eine kurze Vorstellung der Grundlagen der Kalender bleibt kaum Platz, und einige kleinere Fehler stören den Eindruck, aber als Einstieg in die Materie ist es sehr geeignet, nicht nur da es nicht viele deutschsprachige Bücher zu Kalendern außerhalb des gregorianischen gibt. |
Links
Bugs in V2.0
John Walker's Moontool für Windows
Moontool Online (Java)
LunarPhase - eine moderne Oberfläche und einige zusätzliche Features; Shareware
Moon Calculator - DOS-Program mit vielen grafischen Ausgaben
VSOP87, die Planetentheorie; die Tabellen mit den Zahlenwerten können
hier gefunden werden
ELP2000, die Mondtheorie; die Tabellen mit den Zahlenwerten können
hier gefunden werden
verschiedene Zeitdefinitionen wie UTC, dynamische Zeit, Ephemeridenzeit
Physik und Astronomie - Java Applets von Jürgen Giesen
Computus - deutschsprachige Geschichte des gregorianischen Kalenders sowie große Literatur- und Linkliste zum Thema
The Calendar Zone - große Sammlung von Links
Julianischer und Gregorischer Kalender
Chinesesischer Kalender und weitere kalendarische Texte auf der Webseite von
Helmer Aslaksen
LunarCal, Software zum chinesischen Kalender (Charityware)
Jüdischer Kalender
Universal Calendar Calculator - Shareware-Programm, das zwischen mehr als 30 Kalendern umrechnen kann
Wochennummerierung - deutschsprachige Zusammenfassung mit Delphi-Quelltexten
Calendarical Calculations - Webseite zum gleichnamischen Buch
Martian calendar - wie soll der Kalender aus dem Mars aussehen
Bugs in V1.2
Zusätzlich zu den untenstehenden Fixes muß noch die Datei
ah_def.inc aktualisiert werden, einfach die
im Archiv vorhandene Datei mit dieser ersetzen.
weil die Datei moontool.inc fehlt. Für zwei Tage war eine fehlerhafte Version
des ZIP's auf dem Server, in der diese Datei fehlte, jetzt ist sie komplett.
The Funktionen Moon_Position_Horizontal und Sun_Position_Horizontal
setzen die Rückgabewerte elevation und azimuth nicht. Zur Korrektur müssen die beiden
folgenden Zeile ans Ende beider Funktionen eingefügt werden:
elevation:=pos1.elevation;
azimuth:=pos1.azimuth;
Beim Zusammenstellen des Archivs ist die Datei ah_tool.pas
nicht in der für Delphi 6 modifizierten Version benutzt worden,
sondern die vorherige Fassung.
Dies ist aber recht leicht zu korrigieren, einfach den Compilerschalter
(*$j+ *) im interface-Teil der Unit hinzufügen. Dasselbe ist für die
Demoanwendung nötig, dort in der Unit main.pas.
Die meisten benutzten Algorithmen basieren auf einem kontinuierlichen Zeitschema,
der sogenannten dynamischen Zeit (TDT). Die UTC dagegen basiert auf der Erdrotation,
welche unregelmäßig ist und etwas langsamer als 1 Tag - weswegen in unregelmäßigen Abständen
sogenannte Schaltsekunden eingefügt werden. Seit 1999 ist der Unterschied zwischen
TDT und UTC 64 Sekunden - beim Mond entspricht das einer Abweichung der Position von
30 Bogensekunden. Leider ist nicht definiert welches Zeitschema das TDateTime
benutzt, es muß also wann immer nötig (und die Genauigkeit von 1 Minute nicht ausreicht)
umgerechnet werden.
Für die Jahre vor 1900 (d.h. wenn TDateTime negative Werte annimmt)
geben die Funktionen des chinesischen Kalenders unsinnige Werte zurück.
Ursache ist daß intern statt der Funktion trunc
die Funktion floor verwendet werden muß.
Die Funktionen NextPerigee und NextApogee liefern unter
Umständen statt dem nächsten das übernächste Perigäum/Apogäum zurück. Ursache
ist daß der minimale Zeitabstand zwischen zwei Perigäums 24.6 Tage sind, aber
in der Funktion in einem Abstand von 28 Tagen gesucht wird. Als Fix muß in beiden
Funktionen aus der 28 eine 24 werden:
while result<date do begin
result:=nextXXXgee(temp_date,false);
temp_date:=temp_date+24;
end;
Die Uhrzeiten für Mondauf- und -untergang können um einige Minuten vom
korrekten Wert abweichen, weil ich topozentrische und geozentrische
Horizontalkoordinaten durcheinandergebracht habe. Zur Korrektur müssen nur
die drei letzten Aufrufe von CorrectPosition
(nicht aber der erste, der wird gebraucht)
in der Funktion
Calc_Rise_Set gelöscht werden.
Das julianische Osterdatum (wird von den orthodoxen Christen benutzt)
ist für alle Jahre seit 1582 falsch. Der Algorithmus an sich ist korrekt,
aber die Umwandlung in TDateTime ist falsch.
Statt des Aufrufs von EncodeDateCorrect
muß ein EncodeDateJulian stehen, welches wie folgt aussieht:
function EncodedateJulian(year,month,day: word):TDateTime;
begin
result:=delphi_date(Calc_Julian_date_julian(year,month,day));
end;
Es gibt zwei unterschiedliche Definitionen für das Vorzeichen bei der geographischen
Länge, das Problem ist nur daß nirgendwo dokumentiert ist welche benutzt wird.
Analog zu Jean Meeus benutze ich die alte astronomische Definition
(westliche Länge ist positiv), auch wenn eventuell die andere gebräuchlicher ist.
Dies ist kein Bug in der Komponente selber, sondern eine falsche Implementierung der
Konvertierungsfunktionen Delphis selber. Für Date vor dem 30.12.1899 werden (ab Delphi 2)
die Werte von TDateTime negativ, allerdings rechnen die Konvertierungsfunktionen dann mit
dem Absolutbetrag, so daß -0.25 als 6 Uhr morgens interpretiert wird, während korrekt 6 Uhr
abends (6 Stunden vor Mitternacht) wäre. Die folgende Funktion wandelt die aus den
Funktionen zurückgegebenen Werte in ein TDateTime, welches dann mit DateTimeToStr etc.
weiterverarbeitet werden kann:
function CorrectDateTime(v:TDateTime):TDateTime;
begin
result:=v;
if (v<0) and (frac(v)<>0) then
result:=int(v)-frac(v)+1;
end;
Datum | Version | Änderungen |
---|---|---|
1997-04-03 | 1.0 | erste veröffentlichte Version, Sammlung von Funktionen und TImage-ähnliche
Komponente die die Mondphase zu einem beliebigen Datum zeigt Moontool-Klon als Beispielsapplikation |
1997-05-21 | 1.1 | Setzen von Align auf Werte ungleich alNone erzeugte wildes Geflackere Beispielapplikation auch 16bit-fähig gemacht Moontool verrechnete die Sommerzeit falsch |
1997-12-07 | 1.2 | Berechnung der Jahreszeiten, Sonnen- und Mondauf- und untergang, Perigäum und Apogäum sowie Finsternisse Neue Eigenschaft Icon, 16x16 Bitmap weitere Seite im Moontool für die neu hinzugefügten Daten |
2001-07-07 | 2.0 | Rotation des Mondbildes (90°, 180°) "Farbige" Bitmaps Neue Funktionen für die horizontalen Koordinaten Elevation und Azimuth, Berechnung von Perihel und Aphel Osterdatum im julianischen und gregorianischen Kalender Passah-Datum und der jüdische Kalender Chinesischer Kalender Korrigierte TDateTime Funktionen Orts-Datenbank im Moontool Datumseingabe im Moontool |
Letzte Änderung 2002-10-12