Exemple #1
0
 def visible_crescent(self, date):
     """Return S. K. Shaukat's criterion for likely
     visibility of crescent moon on eve of date 'date',
     at location 'location'."""
     tee = self.universal_from_standard(self.dusk(date - 1, mpf(4.5)))
     phase = Lunar.lunar_phase(tee)
     altitude = self.lunar_altitude(tee)
     arc_of_light = arccos_degrees(cos_degrees(Lunar.lunar_latitude(tee)) * cos_degrees(phase))
     return ((Lunar.NEW < phase < Lunar.FIRST_QUARTER) and
             (mpf(10.6) <= arc_of_light <= 90) and
             (altitude > mpf(4.1)))
Exemple #2
0
 def lunar_altitude(self, tee):
     """Return the geocentric altitude of moon at moment, tee,
     at location, location, as a small positive/negative angle in degrees,
     ignoring parallax and refraction.  Adapted from 'Astronomical
     Algorithms' by Jean Meeus, Willmann_Bell, Inc., 1998."""
     lamb = Lunar.lunar_longitude(tee)
     beta = Lunar.lunar_latitude(tee)
     alpha = Astro.right_ascension(tee, beta, lamb)
     delta = Astro.declination(tee, beta, lamb)
     theta0 = Astro.sidereal_from_moment(tee)
     cap_H = mod(theta0 + self.longitude - alpha, 360)
     altitude = arcsin_degrees(
         (sin_degrees(self.latitude) * sin_degrees(delta)) +
         (cos_degrees(self.latitude) * cos_degrees(delta) * cos_degrees(cap_H)))
     return mod(altitude + 180, 360) - 180