Ich möchte nicht zwei Programme in einen Beitrag kleben. Anbei eine Programm zur Umrechnung von Koordinaten von einem Equinoktium in ein anderes. Die Algorithmen entstammen wieder dem "Meeus", ich habe die genauere der beiden abgedruckten Methoden programmiert.
Code:
# praezession.py
# Umrechnung von Koordinaten für vrschiedene Epochen / Lage des Frühlingspunktes
# hier : Für Goseck
from math import *
from sys import *
def praezession( alpha0, delta0, zieljahr):
# Meeus S. 134
T = (zieljahr - 2000) / 100
zeta = (( 0.017998*T+0.30188)*T+2306.2181)*T
z = (( 0.018203*T+1.09468)*T+2306.2181)*T
theta = ((-0.041833*T-0.42665)*T+2004.3109)*T
zeta=radians(zeta/3600)
z=radians(z/3600)
theta=radians(theta/3600)
A=cos(delta0)*sin(alpha0+zeta)
B=cos(theta)*cos(delta0)*cos(alpha0+zeta)-sin(theta)*sin(delta0)
C=sin(theta)*cos(delta0)*cos(alpha0+zeta) + cos(theta)*sin(delta0)
delta1=asin(C)
alpha1=atan2(A,B)
alpha1=alpha1+z
if (alpha1<0):
alpha1=alpha1+2*pi
return alpha1, delta1
name="Arktur"
alpha0=radians(15*(14+15/60+38.0/3600))
delta0=radians(19+10/60+14/3600)
alpha1,delta1=praezession(alpha0, delta0, -4800)
print(name, "\tdelta0=",degrees(delta0), "° \tdelta1=", degrees(delta1),"°")
name="Wega"
alpha0=radians(15*(18+36/60+56.6/3600))
delta0=radians(38+47/60+7/3600)
alpha1,delta1=praezession(alpha0, delta0, -4800)
print(name, "\tdelta0=",degrees(delta0), "° \tdelta1=", degrees(delta1),"°")
name="Kapella"
alpha0=radians(15*(5+16/60+41.5/3600))
delta0=radians(45+59/60+43/3600)
alpha1,delta1=praezession(alpha0, delta0, -4800)
print(name, "delta0=",degrees(delta0), "° \tdelta1=", degrees(delta1),"°")
name="Beteigeuze"
alpha0=radians(15*(5+55/60+10.3/3600))
delta0=radians(7+24/60+25.7/3600)
alpha1,delta1=praezession(alpha0, delta0, -4800)
print(name, "delta0=",degrees(delta0), "° \tdelta1=", degrees(delta1),"°")
name="Atair"
alpha0=radians(15*(19+50/60+47.7/3600))
delta0=radians(8+52/60+14/3600)
alpha1,delta1=praezession(alpha0, delta0, -4800)
print(name, "\tdelta0=",degrees(delta0), "° \tdelta1=", degrees(delta1),"°")
name="Aldebaran"
alpha0=radians(15*(4+35/60+29.5/3600))
delta0=radians(16+30/60+29.5/3600)
alpha1,delta1=praezession(alpha0, delta0, -4800)
print(name, "delta0=",degrees(delta0), "° \tdelta1=", degrees(delta1),"°")
name="Pollux"
alpha0=radians(15*(7+45/60+17.9/3600))
delta0=radians(28+1/60+33/3600)
alpha1,delta1=praezession(alpha0, delta0, -4800)
print(name, "\tdelta0=",degrees(delta0), "° \tdelta1=", degrees(delta1),"°")
name="Deneb"
alpha0=radians(15*(20+41/60+25.91/3600))
delta0=radians(45+16/60+49.2/3600)
alpha1,delta1=praezession(alpha0, delta0, -4800)
print(name, "\tdelta0=",degrees(delta0), "° \tdelta1=", degrees(delta1),"°")
name="Regulus"
alpha0=radians(15*(10+8/60+21.9/3600))
delta0=radians(11+58/60+2.1/3600)
alpha1,delta1=praezession(alpha0, delta0, -4800)
print(name, "\tdelta0=",degrees(delta0), "° \tdelta1=", degrees(delta1),"°")
name="Procyon"
alpha0=radians(15*(7+39/60+17/3600))
delta0=radians(5+13/60+7/3600)
alpha1,delta1=praezession(alpha0, delta0, -4800)
print(name, "\tdelta0=",degrees(delta0), "° \tdelta1=", degrees(delta1),"°")
Ausgabe des Programms:
Code:
Arktur delta0= 19.170555555555556 ° delta1= 52.99972353257164 °
Wega delta0= 38.78527777777778 ° delta1= 50.60253840117335 °
Kapella delta0= 45.99527777777778 ° delta1= 15.326204158103018 °
Beteigeuze delta0= 7.407138888888889 ° delta1= -17.48117513250204 °
Atair delta0= 8.870555555555557 ° delta1= 16.966476099890997 °
Aldebaran delta0= 16.508194444444445 ° delta1= -15.387162221957759 °
Pollux delta0= 28.02583333333333 ° delta1= 13.122675145511284 °
Deneb delta0= 45.28033333333333 ° delta1= 37.915128604618346 °
Regulus delta0= 11.96725 ° delta1= 19.67082368932998 °
Procyon delta0= 5.2186111111111115 ° delta1= -6.818969573672515 °