Specht
Aktives Mitglied
Hallo,
Anfang der 1980er Jahre begann ich, Ephemeriden an meinem damals neuen Commodore C64 zu berechnen. Man hatte noch ein graues Telefon mit Wählscheibe und Hörer, es gab noch keine Smartphones und keine Apps. Es war faszinierend, die ersten selbstberechneten Daten mit den Jahrbüchern zu vergleichen.
Der Weg war steinig, es gab eine Menge Hürden, z.B. das Quadrantenproblem. Man stößt darauf beispielsweise bei der Umrechnung von Planetenkoordinaten in verschiedene Koordinatensysteme. Bei der Umrechnung von ekliptikalen Koordinaten in äquatoriale Koordinaten gelten die bekannten Formeln
sin(r)*cos(d) = cos(e)*cos(b)*sin(l) - sin(e)*sin(b) (I)
cos(r)*cos(d) = cos(b)*cos(l) (II)
sin(d) = cos(e)*sin(b) + sin(e)*cos(b)*sin(l) (III)
r: Rektaszension, d: Deklination, l: ekliptikale Länge, b: ekliptikale Breite, e: Schiefe der Ekliptik
Die Größen sind je nach Programmiersprache im Gradmaß oder im Bogenmaß anzugeben. Die Umrechnung eines Winkels vom Grad- ins Bogenmaß erfolgt durch Multiplikation mit pi/180. Im Folgenden gelte das Gradmaß.
Die Problematik des Quadrantenproblems liegt darin, dass durch die Symmetrie der Graphen die Winkelangaben nicht eindeutig sind. Ein Sinuswert von 0.5 ergibt sich beispielsweise für einen Winkel von 30°, aber auch für einen Winkel von 150°. Ferner liegt der Wertebereich der arcsin-Funktion bei Rechnern im Intervall [-90°, 90°], der Wertebereich des Arcuscosinus im Intervall [0°, 180°]. Somit kann man nur die Deklination d in Formel (III) eindeutig über den Arcussinus berechnen, da die Deklination ja stets im Intervall [-90°, 90°] liegt.
Um die Rektaszension r aus (I) und (II) zu errechnen, findet man in der Literatur zwei Wege. Erstens durch umständliche Fallunterscheidungen der rechten Seiten der Gleichungen (I) und (II). Zweitens durch Division der Gleichung (I) durch Gleichung (II). So gelangt man durch die Arcustangens-Funktion zu r, was aber nicht wirklich gut ist, da diese Funktion auch nur Werte im Intervall ]-90°, 90°[ liefert. Manche Programmiersprachen bieten eine zusätzliche spezielle arctan-Funktion mit zwei Argumenten für dieses Problem an.
Einen eigenen, optimalen Weg fand ich in der Halbwinkelfunktion
tan(x/2) = sin(x) / (1+cos(x)) (IV)
Diese Möglichkeit zur Lösung des Quadrantenproblems hatte ich noch nirgendwo sonst gelesen. Man teilt dazu die Gleichungen (I) und (II) jeweils durch cos(d) und setzt dann die erhaltenen Ausdrücke für sin(r) und cos(r) in Gleichung (IV) ein. Man erhält:
tan(r/2) = (cos(e)*cos(b)*sin(l) - sin(e)*sin(b)) / (cos(d) + cos(b)*cos(l))
und somit
r = 2*arctan[(cos(e)*cos(b)*sin(l) - sin(e)*sin(b)) / (cos(d) + cos(b)*cos(l))] (V)
Diese Funktion für die Rektaszension hat nun den Wertebereich im Intervall ]-180°, 180°[ und liefert stets ein eindeutiges Ergebnis für r. Bei einem negativen Wert addiert man einfach 360°. Zuvor muss man noch die Deklination d aus (III) berechnen.
Fast alle Gleichungen für Koordinatentransformationen haben eine Form von (I), (II) und (III). Eine der drei Gleichungen liefert sofort ein eindeutiges Ergebnis, den anderen Wert berechnet man dann über das Einsetzen der jeweiligen Ausdrücke von Sinus und Cosinus des Wertes in die tan(x/2)-Funktion.
Mittlerweile laufen meine kleinen Programme schon fast 40 Jahre mit diesem kleinen Trick. Vom C64 schrieb ich sie um für den späteren Atari ST, dann in Visual Basic unter Windows XP, später Vista und jetzt Windows 10...
Anfang der 1980er Jahre begann ich, Ephemeriden an meinem damals neuen Commodore C64 zu berechnen. Man hatte noch ein graues Telefon mit Wählscheibe und Hörer, es gab noch keine Smartphones und keine Apps. Es war faszinierend, die ersten selbstberechneten Daten mit den Jahrbüchern zu vergleichen.
Der Weg war steinig, es gab eine Menge Hürden, z.B. das Quadrantenproblem. Man stößt darauf beispielsweise bei der Umrechnung von Planetenkoordinaten in verschiedene Koordinatensysteme. Bei der Umrechnung von ekliptikalen Koordinaten in äquatoriale Koordinaten gelten die bekannten Formeln
sin(r)*cos(d) = cos(e)*cos(b)*sin(l) - sin(e)*sin(b) (I)
cos(r)*cos(d) = cos(b)*cos(l) (II)
sin(d) = cos(e)*sin(b) + sin(e)*cos(b)*sin(l) (III)
r: Rektaszension, d: Deklination, l: ekliptikale Länge, b: ekliptikale Breite, e: Schiefe der Ekliptik
Die Größen sind je nach Programmiersprache im Gradmaß oder im Bogenmaß anzugeben. Die Umrechnung eines Winkels vom Grad- ins Bogenmaß erfolgt durch Multiplikation mit pi/180. Im Folgenden gelte das Gradmaß.
Die Problematik des Quadrantenproblems liegt darin, dass durch die Symmetrie der Graphen die Winkelangaben nicht eindeutig sind. Ein Sinuswert von 0.5 ergibt sich beispielsweise für einen Winkel von 30°, aber auch für einen Winkel von 150°. Ferner liegt der Wertebereich der arcsin-Funktion bei Rechnern im Intervall [-90°, 90°], der Wertebereich des Arcuscosinus im Intervall [0°, 180°]. Somit kann man nur die Deklination d in Formel (III) eindeutig über den Arcussinus berechnen, da die Deklination ja stets im Intervall [-90°, 90°] liegt.
Um die Rektaszension r aus (I) und (II) zu errechnen, findet man in der Literatur zwei Wege. Erstens durch umständliche Fallunterscheidungen der rechten Seiten der Gleichungen (I) und (II). Zweitens durch Division der Gleichung (I) durch Gleichung (II). So gelangt man durch die Arcustangens-Funktion zu r, was aber nicht wirklich gut ist, da diese Funktion auch nur Werte im Intervall ]-90°, 90°[ liefert. Manche Programmiersprachen bieten eine zusätzliche spezielle arctan-Funktion mit zwei Argumenten für dieses Problem an.
Einen eigenen, optimalen Weg fand ich in der Halbwinkelfunktion
tan(x/2) = sin(x) / (1+cos(x)) (IV)
Diese Möglichkeit zur Lösung des Quadrantenproblems hatte ich noch nirgendwo sonst gelesen. Man teilt dazu die Gleichungen (I) und (II) jeweils durch cos(d) und setzt dann die erhaltenen Ausdrücke für sin(r) und cos(r) in Gleichung (IV) ein. Man erhält:
tan(r/2) = (cos(e)*cos(b)*sin(l) - sin(e)*sin(b)) / (cos(d) + cos(b)*cos(l))
und somit
r = 2*arctan[(cos(e)*cos(b)*sin(l) - sin(e)*sin(b)) / (cos(d) + cos(b)*cos(l))] (V)
Diese Funktion für die Rektaszension hat nun den Wertebereich im Intervall ]-180°, 180°[ und liefert stets ein eindeutiges Ergebnis für r. Bei einem negativen Wert addiert man einfach 360°. Zuvor muss man noch die Deklination d aus (III) berechnen.
Fast alle Gleichungen für Koordinatentransformationen haben eine Form von (I), (II) und (III). Eine der drei Gleichungen liefert sofort ein eindeutiges Ergebnis, den anderen Wert berechnet man dann über das Einsetzen der jeweiligen Ausdrücke von Sinus und Cosinus des Wertes in die tan(x/2)-Funktion.
Mittlerweile laufen meine kleinen Programme schon fast 40 Jahre mit diesem kleinen Trick. Vom C64 schrieb ich sie um für den späteren Atari ST, dann in Visual Basic unter Windows XP, später Vista und jetzt Windows 10...
Zuletzt bearbeitet:
