/[PAMELA software]/yodaUtility/sgp4/cJulian.h
ViewVC logotype

Contents of /yodaUtility/sgp4/cJulian.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (show annotations) (download)
Sun Apr 30 11:08:15 2006 UTC (18 years, 7 months ago) by kusanagi
Branch point for: MAIN
File MIME type: text/plain
Initial revision

1 //
2 // cJulian.h
3 //
4 // Copyright (c) 2003 Michael F. Henry
5 //
6 #pragma once
7 #include "globals.h"
8 #include <time.h>
9
10 //
11 // See note in cJulian.cpp for information on this class and the epoch dates
12 //
13 const double EPOCH_JAN1_00H_1900 = 2415019.5; // Jan 1.0 1900 = Jan 1 1900 00h UTC
14 const double EPOCH_JAN1_12H_1900 = 2415020.0; // Jan 1.5 1900 = Jan 1 1900 12h UTC
15 const double EPOCH_JAN1_12H_2000 = 2451545.0; // Jan 1.5 2000 = Jan 1 2000 12h UTC
16
17 //////////////////////////////////////////////////////////////////////////////
18 class cJulian
19 {
20 public:
21 cJulian() { Initialize(2000, 1); }
22 explicit cJulian(time_t t); // Create from time_t
23 explicit cJulian(int year, double day); // Create from year, day of year
24 explicit cJulian(int year, // i.e., 2004
25 int mon, // 1..12
26 int day, // 1..31
27 int hour, // 0..23
28 int min, // 0..59
29 double sec = 0.0); // 0..(59.999999...)
30 ~cJulian() {};
31
32 double toGMST() const; // Greenwich Mean Sidereal Time
33 double toLMST(double lon) const; // Local Mean Sideral Time
34 time_t toTime() const; // To time_t type - avoid using
35
36 double FromJan1_00h_1900() const { return m_Date - EPOCH_JAN1_00H_1900; }
37 double FromJan1_12h_1900() const { return m_Date - EPOCH_JAN1_12H_1900; }
38 double FromJan1_12h_2000() const { return m_Date - EPOCH_JAN1_12H_2000; }
39
40 void getComponent(int *pYear, int *pMon = NULL, double *pDOM = NULL) const;
41 double getDate() const { return m_Date; }
42
43 void addDay (double day) { m_Date += day; }
44 void addHour(double hr ) { m_Date += (hr / HR_PER_DAY ); }
45 void addMin (double min) { m_Date += (min / MIN_PER_DAY); }
46 void addSec (double sec) { m_Date += (sec / SEC_PER_DAY); }
47
48 double spanDay (const cJulian& b) const { return m_Date - b.m_Date; }
49 double spanHour(const cJulian& b) const { return spanDay(b) * HR_PER_DAY; }
50 double spanMin (const cJulian& b) const { return spanDay(b) * MIN_PER_DAY; }
51 double spanSec (const cJulian& b) const { return spanDay(b) * SEC_PER_DAY; }
52
53 static bool IsLeapYear(int y)
54 { return (y % 4 == 0 && y % 100 != 0) || (y % 400 == 0); }
55
56 protected:
57 void Initialize(int year, double day);
58
59 double m_Date; // Julian date
60 };

  ViewVC Help
Powered by ViewVC 1.1.23