OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
Public Member Functions | Protected Attributes | List of all members
ossimplugins::JSDDateTime Class Reference

This class represents a date. More...

#include <JSDDateTime.h>

Public Member Functions

 JSDDateTime ()
 constructor More...
 
 ~JSDDateTime ()
 Destructor. More...
 
 JSDDateTime (const JSDDateTime &rhs)
 Copy constructor. More...
 
 JSDDateTime (JulianDate day0hTU, double second, double decimal)
 Constructor with date initialisation. More...
 
 JSDDateTime (CivilDateTime &rhs)
 Constructor with date initialisation using a CivilDateTime. More...
 
 JSDDateTime (JulianDate &rhs)
 Constructor with date initialisation using a CivilDateTime. More...
 
 JSDDateTime (MJDDateTime &rhs)
 Constructor with date initialisation using a MJDDateTime (Modified Julian Date - Used for ENVISAT) More...
 
JSDDateTimeoperator= (const JSDDateTime &rhs)
 Affectation operator. More...
 
JulianDate get_day0hTU () const
 
double get_second () const
 
double get_decimal () const
 
void set_day0hTU (JulianDate day)
 
void set_second (double second)
 
void set_decimal (double decimal)
 
void NormDate ()
 
int AsJulianDate (JulianDate *julian)
 This function converts the current JSDDateTime into Julian Date. More...
 
int AsGMSTDateTime (GMSTDateTime *GMST)
 This function converts the current JSDDateTime into GMST Date. More...
 
 operator JulianDate ()
 
 operator GMSTDateTime ()
 

Protected Attributes

JulianDate _day0hTU
 Julian day at 0h00 UT. More...
 
double _second
 
double _decimal
 

Detailed Description

This class represents a date.

Definition at line 30 of file JSDDateTime.h.

Constructor & Destructor Documentation

◆ JSDDateTime() [1/6]

ossimplugins::JSDDateTime::JSDDateTime ( )

constructor

Definition at line 28 of file JSDDateTime.cpp.

28  :
29  _day0hTU(0),
30  _second(0.0),
31  _decimal(0.0)
32 {
33 }
JulianDate _day0hTU
Julian day at 0h00 UT.
Definition: JSDDateTime.h:125

◆ ~JSDDateTime()

ossimplugins::JSDDateTime::~JSDDateTime ( )

Destructor.

Definition at line 35 of file JSDDateTime.cpp.

36 {
37 }

◆ JSDDateTime() [2/6]

ossimplugins::JSDDateTime::JSDDateTime ( const JSDDateTime rhs)

Copy constructor.

Definition at line 39 of file JSDDateTime.cpp.

39  :
40  _day0hTU(rhs._day0hTU),
41  _second(rhs._second),
42  _decimal(rhs._decimal)
43 {
44 }
JulianDate _day0hTU
Julian day at 0h00 UT.
Definition: JSDDateTime.h:125

◆ JSDDateTime() [3/6]

ossimplugins::JSDDateTime::JSDDateTime ( JulianDate  day0hTU,
double  second,
double  decimal 
)

Constructor with date initialisation.

Definition at line 46 of file JSDDateTime.cpp.

46  :
47  _day0hTU(day0hTU),
48  _second(second),
49  _decimal(decimal)
50 {
51 }
JulianDate _day0hTU
Julian day at 0h00 UT.
Definition: JSDDateTime.h:125

◆ JSDDateTime() [4/6]

ossimplugins::JSDDateTime::JSDDateTime ( CivilDateTime rhs)

Constructor with date initialisation using a CivilDateTime.

Definition at line 53 of file JSDDateTime.cpp.

References ossimplugins::CivilDateTime::AsJSDDateTime().

54 {
55  rhs.AsJSDDateTime(this);
56 }

◆ JSDDateTime() [5/6]

ossimplugins::JSDDateTime::JSDDateTime ( JulianDate rhs)

Constructor with date initialisation using a CivilDateTime.

Definition at line 58 of file JSDDateTime.cpp.

References ossimplugins::JulianDate::AsJSDDateTime().

59 {
60  rhs.AsJSDDateTime(this);
61 }

◆ JSDDateTime() [6/6]

ossimplugins::JSDDateTime::JSDDateTime ( MJDDateTime rhs)

Constructor with date initialisation using a MJDDateTime (Modified Julian Date - Used for ENVISAT)

Definition at line 64 of file JSDDateTime.cpp.

References _day0hTU, _decimal, _second, ossimplugins::MJDDateTime::get_day(), get_day0hTU(), get_decimal(), ossimplugins::MJDDateTime::get_microsecond(), ossimplugins::MJDDateTime::get_second(), get_second(), NormDate(), ossimplugins::CivilDateTime::set_day(), ossimplugins::CivilDateTime::set_decimal(), ossimplugins::CivilDateTime::set_month(), ossimplugins::CivilDateTime::set_second(), and ossimplugins::CivilDateTime::set_year().

65 {
66  CivilDateTime referenceCiv;
67 
68  /* Initialisation of the MJD reference day (01/01/2000, 0h00) */
69  referenceCiv.set_year(2000);
70  referenceCiv.set_month(01);
71  referenceCiv.set_day(01);
72  referenceCiv.set_second(0);
73  referenceCiv.set_decimal(0.0);
74 
75  /* JSD day of the ref. MJD date */
76  JSDDateTime referenceJSD(referenceCiv);
77 
78  /* JSD day computation */
79  JulianDate JD((double) rhs.get_day());
80 
81  _day0hTU = referenceJSD.get_day0hTU() + JD;
82  _second = referenceJSD.get_second() + (double) rhs.get_second();
83  _decimal = referenceJSD.get_decimal() + 0.000001 * (double) rhs.get_microsecond();
84 
85  this->NormDate();
86 }
JulianDate _day0hTU
Julian day at 0h00 UT.
Definition: JSDDateTime.h:125

Member Function Documentation

◆ AsGMSTDateTime()

int ossimplugins::JSDDateTime::AsGMSTDateTime ( GMSTDateTime GMST)

This function converts the current JSDDateTime into GMST Date.

Returns
0 if no error or an int greater than 0 indicating the error
Parameters
julianDate[out] The class that receives the result of the conversion of the current JSDDateTime into GMST Date

Definition at line 105 of file JSDDateTime.cpp.

References _decimal, _second, ossimplugins::GMSTDateTime::AN1900, ossimplugins::GMSTDateTime::AN1950, ossimplugins::GMSTDateTime::AN2000, AsJulianDate(), ossimplugins::JulianDate::get_julianDate(), ossimplugins::GMSTDateTime::get_origine(), ossimplugins::CivilDateTime::JOURCIVIL_LENGTH, set_decimal(), set_second(), ossimplugins::GMSTDateTime::set_tms(), and TWOPI.

Referenced by ossimplugins::ossimRadarSatModel::InitPlatformPosition(), ossimplugins::GeographicEphemeris::ToGalilean(), and ossimplugins::GalileanEphemeris::ToGeographic().

106 {
107  const double TWOPI = 6.28318530717958647693 ;
108  const double OMEGATERRE = 6.28318530717958647693 / 86164.09054 ;
109 
110  int etat ;
111  JulianDate jourJulien;
112  double t = 0.0;
113  double tsm0hTU = 0.0;
114  double tsm = 0.0;
115  JSDDateTime date0hTU ;
116 
117 
118  date0hTU = *this ;
119  date0hTU.set_second(0);
120  date0hTU.set_decimal(0.0);
121 
122  etat = date0hTU.AsJulianDate(&jourJulien ) ;
123 
124  if (etat == 0)
125  {
126  if (GMST->get_origine() == GMSTDateTime::AN1900)
127  {
128  t = (jourJulien.get_julianDate() - 2415020.0) / 36525.0 ;
129  tsm0hTU = 23925.836 + t * (8640184.542 + t * 0.0929) ;
130  tsm0hTU = tsm0hTU * TWOPI / CivilDateTime::JOURCIVIL_LENGTH ;
131  }
132  else if (GMST->get_origine() == GMSTDateTime::AN1950)
133  {
134  t = jourJulien.get_julianDate() - 2433281.5 ;
135  tsm0hTU = 1.72944494 + t * 6.3003880987 ;
136  }
137  else if (GMST->get_origine() == GMSTDateTime::AN2000)
138  {
139  t = (jourJulien.get_julianDate() - 2451545.0) / 36525.0 ;
140  tsm0hTU = 24110.54841 + t * (8640184.812866
141  + t * (0.093103 - t * 6.210e-6)) ;
142  tsm0hTU = tsm0hTU * TWOPI / CivilDateTime::JOURCIVIL_LENGTH ;
143  }
144  t = tsm0hTU + (_second + _decimal) * OMEGATERRE ;
145  tsm = fmod (t,TWOPI) ;
146  if (tsm < 0.0)
147  {
148  tsm = tsm + TWOPI ;
149  }
150 
151  GMST->set_tms(tsm);
152  }
153 
154  return etat ;
155 }
static const double JOURCIVIL_LENGTH

◆ AsJulianDate()

int ossimplugins::JSDDateTime::AsJulianDate ( JulianDate julian)

This function converts the current JSDDateTime into Julian Date.

Returns
0 if no error or an int greater than 0 indicating the error
Parameters
julianDate[out] The classe that receives the result of the conversion of the current JSDDateTime in JulianDate

Definition at line 97 of file JSDDateTime.cpp.

References _day0hTU, _decimal, _second, ossimplugins::JulianDate::get_julianDate(), ossimplugins::CivilDateTime::JOURCIVIL_LENGTH, and ossimplugins::JulianDate::set_julianDate().

Referenced by AsGMSTDateTime(), and ossimplugins::JulianDate::JulianDate().

98 {
100  julian->set_julianDate(jourJulien);
101 
102  return 0 ;
103 }
double get_julianDate() const
Definition: JulianDate.h:70
static const double JOURCIVIL_LENGTH
JulianDate _day0hTU
Julian day at 0h00 UT.
Definition: JSDDateTime.h:125

◆ get_day0hTU()

JulianDate ossimplugins::JSDDateTime::get_day0hTU ( ) const
inline

◆ get_decimal()

double ossimplugins::JSDDateTime::get_decimal ( ) const
inline

◆ get_second()

double ossimplugins::JSDDateTime::get_second ( ) const
inline

◆ NormDate()

void ossimplugins::JSDDateTime::NormDate ( )

Definition at line 157 of file JSDDateTime.cpp.

References _day0hTU, _decimal, _second, ossimplugins::fnint(), ossimplugins::JulianDate::get_julianDate(), ossimplugins::inint(), and ossimplugins::CivilDateTime::JOURCIVIL_LENGTH.

Referenced by ossimplugins::ossimGeometricSarSensorModel::getTime(), ossimplugins::ossimErsSarModel::InitPlatformPosition(), ossimplugins::ossimAlosPalsarModel::InitPlatformPosition(), ossimplugins::ossimRadarSatModel::InitPlatformPosition(), and JSDDateTime().

158 {
159  const double epsilon = 1.0e-12 ;
160 
161  int k, iu, iv, iw ;
162  double u, v, w, ru, rv, rw ;
163 
164 
165  w = _day0hTU.get_julianDate() - 0.5 ;
166  if (fabs (w - fnint (w)) < epsilon)
167  {
168  iw = (int)inint(w) ;
169  rw = 0.0 ;
170  }
171  else
172  {
173  iw = (int)w ;
174  rw = w - (double)iw ;
175  if ((iw < 0) && (rw != 0.0))
176  {
177  iw = iw - 1 ;
178  rw = rw + 1.0 ;
179  }
180  }
181 
183  if (fabs(v - fnint (v)) < epsilon)
184  {
185  iv = (int)inint (v) ;
186  rv = 0.0 ;
187  }
188  else
189  {
190  iv = (int)v ;
191  rv = v - (double)iv ;
192  if ((iv < 0) && (rv != 0.0))
193  {
194  iv = iv - 1 ;
195  rv = rv + 1.0 ;
196  }
197  }
198 
199  u = _decimal + rv ;
200  iu = (int)u ;
201  ru = u - (double)iu ;
202  if ((iu < 0) && (ru != 0.0))
203  {
204  iu = iu - 1 ;
205  ru = ru + 1.0 ;
206  }
207 
208  iv = iv + iu ;
209  k = iv / ((int)inint(CivilDateTime::JOURCIVIL_LENGTH)) ;
210  iw = iw + k ;
211  iv = iv - k * ((int)inint(CivilDateTime::JOURCIVIL_LENGTH)) ;
212  if (iv < 0)
213  {
214  iw = iw - 1 ;
215  iv = iv + (int)inint(CivilDateTime::JOURCIVIL_LENGTH) ;
216  }
217 
218  _decimal = ru ;
219  _second = (double)iv ;
220  _day0hTU = (double)iw + 0.5 ;
221 }
double get_julianDate() const
Definition: JulianDate.h:70
static const double JOURCIVIL_LENGTH
JulianDate _day0hTU
Julian day at 0h00 UT.
Definition: JSDDateTime.h:125
double fnint(double x)
Definition: Arithmetic.h:35
long inint(double x)
Definition: Arithmetic.h:26

◆ operator GMSTDateTime()

ossimplugins::JSDDateTime::operator GMSTDateTime ( )

Definition at line 230 of file JSDDateTime.cpp.

231 {
232  GMSTDateTime date;
233  this->AsGMSTDateTime(&date);
234  return date;
235 }
int AsGMSTDateTime(GMSTDateTime *GMST)
This function converts the current JSDDateTime into GMST Date.

◆ operator JulianDate()

ossimplugins::JSDDateTime::operator JulianDate ( )

Definition at line 223 of file JSDDateTime.cpp.

224 {
225  JulianDate date;
226  this->AsJulianDate(&date);
227  return date;
228 }
int AsJulianDate(JulianDate *julian)
This function converts the current JSDDateTime into Julian Date.
Definition: JSDDateTime.cpp:97

◆ operator=()

JSDDateTime & ossimplugins::JSDDateTime::operator= ( const JSDDateTime rhs)

Affectation operator.

Definition at line 88 of file JSDDateTime.cpp.

References _day0hTU, _decimal, and _second.

89 {
90  _day0hTU = rhs._day0hTU;
91  _second = rhs._second;
92  _decimal = rhs._decimal;
93 
94  return *this;
95 }
JulianDate _day0hTU
Julian day at 0h00 UT.
Definition: JSDDateTime.h:125

◆ set_day0hTU()

void ossimplugins::JSDDateTime::set_day0hTU ( JulianDate  day)
inline

Definition at line 86 of file JSDDateTime.h.

Referenced by ossimplugins::CivilDateTime::AsJSDDateTime(), ossimplugins::JulianDate::AsJSDDateTime(), and ossimplugins::Ephemeris::loadState().

87  {
88  _day0hTU = day;
89  }
JulianDate _day0hTU
Julian day at 0h00 UT.
Definition: JSDDateTime.h:125

◆ set_decimal()

void ossimplugins::JSDDateTime::set_decimal ( double  decimal)
inline

◆ set_second()

void ossimplugins::JSDDateTime::set_second ( double  second)
inline

Member Data Documentation

◆ _day0hTU

JulianDate ossimplugins::JSDDateTime::_day0hTU
protected

Julian day at 0h00 UT.

Definition at line 125 of file JSDDateTime.h.

Referenced by AsJulianDate(), JSDDateTime(), NormDate(), and operator=().

◆ _decimal

double ossimplugins::JSDDateTime::_decimal
protected

Definition at line 127 of file JSDDateTime.h.

Referenced by AsGMSTDateTime(), AsJulianDate(), JSDDateTime(), NormDate(), and operator=().

◆ _second

double ossimplugins::JSDDateTime::_second
protected

Definition at line 126 of file JSDDateTime.h.

Referenced by AsGMSTDateTime(), AsJulianDate(), JSDDateTime(), NormDate(), and operator=().


The documentation for this class was generated from the following files: