Beispiel #1
0
 def equation_of_time(cls, tee):
     """Return the equation of time (as fraction of day) for moment, tee.
     Adapted from "Astronomical Algorithms" by Jean Meeus,
     Willmann_Bell, Inc., 1991."""
     c = cls.julian_centuries(tee)
     lamb = poly(c, [mpf(280.46645), mpf(36000.76983), mpf(0.0003032)])
     anomaly = poly(c, [mpf(357.52910), mpf(35999.05030), mpf(-0.0001559), mpf(-0.00000048)])
     eccentricity = poly(c, [mpf(0.016708617), mpf(-0.000042037), mpf(-0.0000001236)])
     varepsilon = cls.obliquity(tee)
     y = pow(tan_degrees(varepsilon / 2), 2)
     equation = ((1/2 / pi) *
                 (y * sin_degrees(2 * lamb) +
                  -2 * eccentricity * sin_degrees(anomaly) +
                  (4 * eccentricity * y * sin_degrees(anomaly) *
                   cos_degrees(2 * lamb)) +
                  -0.5 * y * y * sin_degrees(4 * lamb) +
                  -1.25 * eccentricity * eccentricity * sin_degrees(2 * anomaly)))
     return signum(equation) * min(abs(equation), Clock.days_from_hours(mpf(12)))
Beispiel #2
0
 def sine_table(cls, entry):
     """Return the value for entry in the Hindu sine table.
     Entry, entry, is an angle given as a multiplier of 225'."""
     exact = 3438 * sin_degrees(entry * angle(0, 225, 0))
     error = 0.215 * signum(exact) * signum(abs(exact) - 1716)
     return iround(exact + error) / 3438