Nutze Skyfield fuer praezisere Daemmerungsberechnung
This commit is contained in:
+69
@@ -0,0 +1,69 @@
|
||||
from numpy import array, cos, sin
|
||||
|
||||
from .constants import ASEC2RAD, T0
|
||||
|
||||
def compute_precession(jd_tdb):
|
||||
"""Return the rotation matrices for precessing to an array of epochs.
|
||||
|
||||
`jd_tdb` - array of TDB Julian dates
|
||||
|
||||
The array returned has the shape `(3, 3, n)` where `n` is the number
|
||||
of dates that have been provided as input.
|
||||
|
||||
"""
|
||||
eps0 = 84381.406
|
||||
|
||||
# 't' is time in TDB centuries.
|
||||
|
||||
t = (jd_tdb - T0) / 36525.0
|
||||
|
||||
# Numerical coefficients of psi_a, omega_a, and chi_a, along with
|
||||
# epsilon_0, the obliquity at J2000.0, are 4-angle formulation from
|
||||
# Capitaine et al. (2003), eqs. (4), (37), & (39).
|
||||
|
||||
psia = ((((- 0.0000000951 * t
|
||||
+ 0.000132851 ) * t
|
||||
- 0.00114045 ) * t
|
||||
- 1.0790069 ) * t
|
||||
+ 5038.481507 ) * t
|
||||
|
||||
omegaa = ((((+ 0.0000003337 * t
|
||||
- 0.000000467 ) * t
|
||||
- 0.00772503 ) * t
|
||||
+ 0.0512623 ) * t
|
||||
- 0.025754 ) * t + eps0
|
||||
|
||||
chia = ((((- 0.0000000560 * t
|
||||
+ 0.000170663 ) * t
|
||||
- 0.00121197 ) * t
|
||||
- 2.3814292 ) * t
|
||||
+ 10.556403 ) * t
|
||||
|
||||
eps0 = eps0 * ASEC2RAD
|
||||
psia = psia * ASEC2RAD
|
||||
omegaa = omegaa * ASEC2RAD
|
||||
chia = chia * ASEC2RAD
|
||||
|
||||
sa = sin(eps0)
|
||||
ca = cos(eps0)
|
||||
sb = sin(-psia)
|
||||
cb = cos(-psia)
|
||||
sc = sin(-omegaa)
|
||||
cc = cos(-omegaa)
|
||||
sd = sin(chia)
|
||||
cd = cos(chia)
|
||||
|
||||
# Compute elements of precession rotation matrix equivalent to
|
||||
# R3(chi_a) R1(-omega_a) R3(-psi_a) R1(epsilon_0).
|
||||
|
||||
rot3 = array(((cd * cb - sb * sd * cc,
|
||||
cd * sb * ca + sd * cc * cb * ca - sa * sd * sc,
|
||||
cd * sb * sa + sd * cc * cb * sa + ca * sd * sc),
|
||||
(-sd * cb - sb * cd * cc,
|
||||
-sd * sb * ca + cd * cc * cb * ca - sa * cd * sc,
|
||||
-sd * sb * sa + cd * cc * cb * sa + ca * cd * sc),
|
||||
(sb * sc,
|
||||
-sc * cb * ca - sa * cc,
|
||||
-sc * cb * sa + cc * ca)))
|
||||
|
||||
return rot3
|
||||
Reference in New Issue
Block a user