MoonCycle.cc
Go to the documentation of this file.
1 #include <utl/MoonCycle.h>
2 #include <utl/ModifiedJulianDate.h>
3 
4 
5 namespace utl {
6 
7  // "Mean" new moon of J2000 epoch: 6 Jan 2000 14:20 UT.
8  const double kJ2000NewMoonMJD = 51549.59757;
9 
10  // Days in a mean synodic month (new moon to new moon period):
11  const double kMeanSynodicMonth = 29.530589;
12 
13 
14  double
16  const
17  {
18  // Find the lunation (new moon cycle) relative to 6 Jan 2000 using the mean
19  // synodic month. This introduces a maximum discrepancy of +/-14 hours with
20  // respect to the true lunation (checked between Jan 2000 - Dec 2030).
21  double lunation =
23 
24  switch (epoch) {
25  case eJan2000: // Default: new moon of 6 Jan 2000 (first of J2000.0).
26  break;
27  case eJan2004: // Subtract the 49 lunations bet. Jan 2000 and Dec 2003.
28  lunation -= 49;
29  break;
30  default:
31  break;
32  }
33 
34  switch (type) {
35  case eNewMoon: // Fractional moon phase: 0 = New Moon.
36  break;
37  case eFirstQuarter: // Fractional moon phase: 0.25 = Full Moon.
38  lunation -= 0.25;
39  break;
40  case eFullMoon: // Fractional moon phase: 0.5 = Full Moon.
41  lunation -= 0.5;
42  break;
43  case eLastQuarter: // Fractional moon phase: 0.75 = Full Moon.
44  lunation -= 0.75;
45  break;
46  default:
47  break;
48  }
49 
50  return lunation;
51  }
52 
53 }
double ModifiedJulianDate(const time_t unixSecond)
const TimeStamp fTime
Definition: MoonCycle.h:44
const double kMeanSynodicMonth
Definition: MoonCycle.cc:11
const double kJ2000NewMoonMJD
Definition: MoonCycle.cc:8
double GetLunation(const LunationType type=eFullMoon, const LunationEpoch epoch=eJan2004) const
Definition: MoonCycle.cc:15

, generated on Tue Sep 26 2023.