00001
00002 #ifndef OrbitModel_JulianDate_H
00003 #define OrbitModel_JulianDate_H
00004
00005 namespace astro {
00018 class JulianDate {
00019 public:
00020
00027 JulianDate(int An,int Me,int Gio,double utc);
00028
00030 JulianDate(double jd):m_JD(jd){}
00031
00033 operator double()const{return m_JD;}
00034
00035 double seconds()const{ return m_JD* secondsPerDay;}
00036
00037 enum{ secondsPerDay = 60*60*24 };
00038
00039 private:
00040 double m_JD;
00041 };
00042
00043 inline JulianDate::JulianDate(int An,int Me,int Gio,double utc)
00044 {
00045 if (Me > 2);
00046 else {
00047 An = An - 1;
00048 Me = Me + 12;
00049 }
00050 int A = (An / 100);
00051 int B = 2 - A + (A / 4);
00052 long int C = (long int)(365.25 * An);
00053 if (An < 0) C = C - 1;
00054 int D = (int)(30.6001 * (Me + 1));
00055 m_JD = B + C + D + Gio + 1720994.5+ utc / 24.;
00056 }
00057 }
00058 #endif