ReferenceFrames Class Reference
[GeoDynamics]

#include <ReferenceFrames.hpp>

Collaboration diagram for ReferenceFrames:

Collaboration graph
[legend]
List of all members.

Detailed Description

Class to do Reference frame transformation.

Definition at line 49 of file ReferenceFrames.hpp.

Static Public Member Functions

int setJPLEphFile (std::string filename) throw (Exception)
 Open the given binary file,.
Vector< double > getJ2kPosition (const CommonTime &TT, SolarSystem::Planet entity=SolarSystem::Earth) throw (Exception)
 Compute planet position in J2000.
Vector< double > getJ2kVelocity (const CommonTime &TT, SolarSystem::Planet entity=SolarSystem::Earth) throw (Exception)
 Compute planet velocity in J2000.
Vector< double > getJ2kPosVel (const CommonTime &TT, SolarSystem::Planet entity, SolarSystem::Planet center=SolarSystem::Earth) throw (Exception)
 Compute planet position and velocity in J2000.
Vector< double > getECEFPosition (UTCTime UTC, SolarSystem::Planet entity, SolarSystem::Planet center=SolarSystem::Earth) throw (Exception)
 Compute planet position in ECEF.
Vector< double > getECEFVelocity (UTCTime UTC, SolarSystem::Planet entity, SolarSystem::Planet center=SolarSystem::Earth) throw (Exception)
 Compute planet velocity in ECEF.
Vector< double > getECEFPosVel (UTCTime UTC, SolarSystem::Planet entity, SolarSystem::Planet center=SolarSystem::Earth) throw (Exception)
 Compute planet position and velocity in ECEF.
void J2kToECEFMatrix (UTCTime UTC, Matrix< double > &POM, Matrix< double > &Theta, Matrix< double > &NP) throw (Exception)
 ECEF = POM * Theta * NP * J2k.
Matrix< double > J2kToECEFMatrix (UTCTime UTC)
 Get ECI to ECF transform matrix, POM * Theta * NP.
Matrix< double > J2kToTODMatrix (UTCTime UTC)
 NP TOD - TrueOfDate.
Vector< double > J2kPosVelToECEF (UTCTime UTC, Vector< double > j2kPosVel) throw (Exception)
 Convert position and velocity from J2000 to ECEF.
Vector< double > ECEFPosVelToJ2k (UTCTime UTC, Vector< double > ecefPosVel) throw (Exception)
 Convert position and velocity from ECEF to J2000.
Vector< double > J2kStateToECEF (UTCTime UTC, Vector< double > j2kState) throw (Exception)
 Convert state from J2000 to ECEF.
Vector< double > ECEFStateToJ2k (UTCTime UTC, Vector< double > ecefState) throw (Exception)
 Convert state from ECEF to J2000.
void doodsonArguments (CommonTime UT1, CommonTime TT, double BETA[6], double FNUT[5])
 COMPUTE DOODSON'S FUNDAMENTAL ARGUMENTS (BETA) AND FUNDAMENTAL ARGUMENTS FOR NUTATION (FNUT) BETA=(B1,B2,B3,B4,B5,B6) FNUT=(F1,F2,F3,F4,F5) F1=MEAN ANOMALY (MOON) F2=MEAN ANOMALY (SUN) F3=F=MOON'S MEAN LONGITUDE-LONGITUDE OF LUNAR ASC.
double iauGmst00 (CommonTime UT1, CommonTime TT)
 Greenwich mean sidereal time by IAU 2000 model.
Matrix< double > enuMatrix (double longitude, double latitude)
Vector< double > enuToAzElDt (Vector< double > enu)
void XYZ2BLH (double xyz[3], double blh[3])
void BLH2XYZ (double blh[3], double xyz[3])
void XYZ2ENU (double blh[3], double xyz[3], double enu[3])
void ENU2XYZ (double blh[3], double enu[3], double xyz[3])
void test ()
 some test
Matrix< double > Rx (const double &angle)
 Rotate a matrix about the x-axis.
Matrix< double > Ry (const double &angle)
 Rotate a matrix about the y-axis.
Matrix< double > Rz (const double &angle)
 Rotate a matrix about the z-axis.

Protected Member Functions

 ReferenceFrames ()
 Default constructor.
 ~ReferenceFrames ()
 Default deconstructor.

Static Protected Member Functions

Matrix< double > iauPmat76 (CommonTime TT)
 Precession matrix by IAU 1976 model.
void nutationAngles (CommonTime TT, double &dpsi, double &deps)
 Nutation angles by IAU 1980 model.
double meanObliquity (CommonTime TT)
 Mean obliquity of the ecliptic by IAU 1980 model.
double iauEqeq94 (CommonTime TT)
 Equation of the equinoxes by IAU 1994 model.
double iauGmst82 (CommonTime UT1)
 Greenwich mean sidereal time by IAU 1982 model.
Matrix< double > iauNmat (const double &epsa, const double &dpsi, const double &deps)
 Nutation matrix from nutation angles.
double earthRotationAngle (CommonTime UT1)
 earth rotation angle
double earthRotationAngleRate1 (const double &mjdTT)
 Earth rotation angle first order rate.
double earthRotationAngleRate2 (const double &mjdTT)
 Earth rotation angle second order rate .
double earthRotationAngleRate3 (const double &mjdTT)
 Earth rotation angle third order rate.
double normalizeAngle (double a)
 Normalize angle into the range -pi <= a < +pi.


Constructor & Destructor Documentation

ReferenceFrames  )  [inline, protected]
 

Default constructor.

Definition at line 226 of file ReferenceFrames.hpp.

~ReferenceFrames  )  [inline, protected]
 

Default deconstructor.

Definition at line 229 of file ReferenceFrames.hpp.


Member Function Documentation

void BLH2XYZ double  blh[3],
double  xyz[3]
[static]
 

Definition at line 1256 of file ReferenceFrames.cpp.

References gpstk::cos(), gpstk::sin(), and gpstk::sqrt().

Referenced by ReferenceFrames::XYZ2ENU().

void doodsonArguments CommonTime  UT1,
CommonTime  TT,
double  BETA[6],
double  FNUT[5]
[static]
 

COMPUTE DOODSON'S FUNDAMENTAL ARGUMENTS (BETA) AND FUNDAMENTAL ARGUMENTS FOR NUTATION (FNUT) BETA=(B1,B2,B3,B4,B5,B6) FNUT=(F1,F2,F3,F4,F5) F1=MEAN ANOMALY (MOON) F2=MEAN ANOMALY (SUN) F3=F=MOON'S MEAN LONGITUDE-LONGITUDE OF LUNAR ASC.

NODE F4=D=MEAN ELONGATION OF MOON FROM SUN F5=MEAN LONGITUDE OF LUNAR ASC. NODE

B2=S=F3+F5 B3=H=S-F4=S-D B4=P=S-F1 B5=NP=-F5 B6=PS=S-F4-F2 B1=THETA+PI-S

Parameters:
mjdUT1 TIME IN MJD
mjdTT TIME IN TT
THETA CORRESPONDING MEAN SID.TIME GREENWICH
BETA DOODSON ARGUMENTS
FNUT FUNDAMENTAL ARGUMENTS FOR NUTATION

Definition at line 639 of file ReferenceFrames.cpp.

References F1, F2, ReferenceFrames::iauGmst00(), and ReferenceFrames::normalizeAngle().

double earthRotationAngle CommonTime  UT1  )  [static, protected]
 

earth rotation angle

Definition at line 565 of file ReferenceFrames.cpp.

References ReferenceFrames::normalizeAngle().

Referenced by ReferenceFrames::iauGmst00().

double earthRotationAngleRate1 const double &  mjdTT  )  [static, protected]
 

Earth rotation angle first order rate.

Parameters:
mjdTT Modified Julian Date in TT
Returns:
d(GAST)/d(t) in [rad]

Definition at line 580 of file ReferenceFrames.cpp.

double earthRotationAngleRate2 const double &  mjdTT  )  [static, protected]
 

Earth rotation angle second order rate .

Parameters:
Modified Julian Date in TT
Returns:
d(GAST)2/d(t)2 in [rad]

Definition at line 594 of file ReferenceFrames.cpp.

double earthRotationAngleRate3 const double &  mjdTT  )  [static, protected]
 

Earth rotation angle third order rate.

Parameters:
Modified Julian Date in TT
Returns:
d(GAST)3/d(t)3 in [rad]

Definition at line 607 of file ReferenceFrames.cpp.

Vector< double > ECEFPosVelToJ2k UTCTime  UTC,
Vector< double >  ecefPosVel
throw (Exception) [static]
 

Convert position and velocity from ECEF to J2000.

Definition at line 355 of file ReferenceFrames.cpp.

References gpstk::earthRotationAngleRate1(), gpstk::J2kToECEFMatrix(), and gpstk::transpose().

Vector< double > ECEFStateToJ2k UTCTime  UTC,
Vector< double >  ecefState
throw (Exception) [static]
 

Convert state from ECEF to J2000.

Definition at line 480 of file ReferenceFrames.cpp.

References gpstk::earthRotationAngleRate1(), gpstk::J2kToECEFMatrix(), and gpstk::transpose().

void ENU2XYZ double  blh[3],
double  enu[3],
double  xyz[3]
[static]
 

Matrix< double > enuMatrix double  longitude,
double  latitude
[static]
 

Definition at line 1171 of file ReferenceFrames.cpp.

References gpstk::cos(), and gpstk::sin().

Vector< double > enuToAzElDt Vector< double >  enu  )  [static]
 

Definition at line 1188 of file ReferenceFrames.cpp.

References gpstk::atan(), gpstk::norm(), and gpstk::sqrt().

Vector< double > getECEFPosition UTCTime  UTC,
SolarSystem::Planet  entity,
SolarSystem::Planet  center = SolarSystem::Earth
throw (Exception) [static]
 

Compute planet position in ECEF.

Parameters:
UTC Time(Modified Julian Date in UTC) of interest
entity The planet to be computed
center relative to whick the result apply
Returns:
The position of the planet in km

Definition at line 184 of file ReferenceFrames.cpp.

References gpstk::StringUtils::center().

Vector< double > getECEFPosVel UTCTime  UTC,
SolarSystem::Planet  entity,
SolarSystem::Planet  center = SolarSystem::Earth
throw (Exception) [static]
 

Compute planet position and velocity in ECEF.

Parameters:
UTC Time(Modified Julian Date in UTC) of interest
entity The planet to be computed
center relative to whick the result apply
Returns:
The position and velocity of the planet in km and km/s

Definition at line 228 of file ReferenceFrames.cpp.

References gpstk::J2kPosVelToECEF().

Vector< double > getECEFVelocity UTCTime  UTC,
SolarSystem::Planet  entity,
SolarSystem::Planet  center = SolarSystem::Earth
throw (Exception) [static]
 

Compute planet velocity in ECEF.

Parameters:
UTC Time(Modified Julian Date in UTC) of interest
entity The planet to be computed
center relative to whick the result apply
Returns:
The position of the planet in km/s

Definition at line 206 of file ReferenceFrames.cpp.

References gpstk::StringUtils::center().

Vector< double > getJ2kPosition const CommonTime TT,
SolarSystem::Planet  entity = SolarSystem::Earth
throw (Exception) [static]
 

Compute planet position in J2000.

Parameters:
TT Time(Modified Julian Date in TT<TAI+32.184>) of interest
entity The planet to be computed
Returns:
The position of the planet in km

Definition at line 75 of file ReferenceFrames.cpp.

Vector< double > getJ2kPosVel const CommonTime TT,
SolarSystem::Planet  entity,
SolarSystem::Planet  center = SolarSystem::Earth
throw (Exception) [static]
 

Compute planet position and velocity in J2000.

Parameters:
TT Time(Modified Julian Date in TT<TAI+32.184>) of interest
entity The planet to be computed
center relative to whick the result apply
Returns:
The position and velocity of the planet in km and km/s

Definition at line 118 of file ReferenceFrames.cpp.

References gpstk::StringUtils::center(), GPSTK_RETHROW, GPSTK_THROW, and Vector::resize().

Vector< double > getJ2kVelocity const CommonTime TT,
SolarSystem::Planet  entity = SolarSystem::Earth
throw (Exception) [static]
 

Compute planet velocity in J2000.

Parameters:
TT Time(Modified Julian Date in TT<TAI+32.184>) of interest
entity The planet to be computed
Returns:
The velocity of the planet in km/s

Definition at line 96 of file ReferenceFrames.cpp.

double iauEqeq94 CommonTime  TT  )  [static, protected]
 

Equation of the equinoxes by IAU 1994 model.

Definition at line 1091 of file ReferenceFrames.cpp.

References gpstk::cos(), ReferenceFrames::meanObliquity(), ReferenceFrames::normalizeAngle(), ReferenceFrames::nutationAngles(), and gpstk::sin().

double iauGmst00 CommonTime  UT1,
CommonTime  TT
[static]
 

Greenwich mean sidereal time by IAU 2000 model.

Definition at line 1144 of file ReferenceFrames.cpp.

References ReferenceFrames::earthRotationAngle(), and ReferenceFrames::normalizeAngle().

Referenced by ReferenceFrames::doodsonArguments().

double iauGmst82 CommonTime  UT1  )  [static, protected]
 

Greenwich mean sidereal time by IAU 1982 model.

Definition at line 1115 of file ReferenceFrames.cpp.

References ReferenceFrames::normalizeAngle().

Matrix< double > iauNmat const double &  epsa,
const double &  dpsi,
const double &  deps
[static, protected]
 

Nutation matrix from nutation angles.

Definition at line 1163 of file ReferenceFrames.cpp.

References ReferenceFrames::Rx(), and ReferenceFrames::Rz().

Matrix< double > iauPmat76 CommonTime  TT  )  [static, protected]
 

Precession matrix by IAU 1976 model.

Definition at line 834 of file ReferenceFrames.cpp.

References ReferenceFrames::Ry(), and ReferenceFrames::Rz().

Vector< double > J2kPosVelToECEF UTCTime  UTC,
Vector< double >  j2kPosVel
throw (Exception) [static]
 

Convert position and velocity from J2000 to ECEF.

Definition at line 315 of file ReferenceFrames.cpp.

References gpstk::earthRotationAngleRate1(), and gpstk::J2kToECEFMatrix().

Referenced by ReferenceFrames::test().

Vector< double > J2kStateToECEF UTCTime  UTC,
Vector< double >  j2kState
throw (Exception) [static]
 

Convert state from J2000 to ECEF.

Definition at line 395 of file ReferenceFrames.cpp.

References gpstk::earthRotationAngleRate1(), and gpstk::J2kToECEFMatrix().

Matrix< double > J2kToECEFMatrix UTCTime  UTC  )  [static]
 

Get ECI to ECF transform matrix, POM * Theta * NP.

Definition at line 297 of file ReferenceFrames.cpp.

References ReferenceFrames::J2kToECEFMatrix().

void J2kToECEFMatrix UTCTime  UTC,
Matrix< double > &  POM,
Matrix< double > &  Theta,
Matrix< double > &  NP
throw (Exception) [static]
 

ECEF = POM * Theta * NP * J2k.

Definition at line 240 of file ReferenceFrames.cpp.

References gpstk::cos(), gpstk::iauEqeq94(), gpstk::iauGmst82(), gpstk::iauNmat(), gpstk::iauPmat76(), gpstk::meanObliquity(), gpstk::normalizeAngle(), gpstk::nutationAngles(), gpstk::Rx(), gpstk::Ry(), and gpstk::Rz().

Referenced by ReferenceFrames::J2kToECEFMatrix(), and ReferenceFrames::J2kToTODMatrix().

Matrix< double > J2kToTODMatrix UTCTime  UTC  )  [static]
 

NP TOD - TrueOfDate.

Definition at line 306 of file ReferenceFrames.cpp.

References ReferenceFrames::J2kToECEFMatrix().

double meanObliquity CommonTime  TT  )  [static, protected]
 

Mean obliquity of the ecliptic by IAU 1980 model.

Definition at line 1076 of file ReferenceFrames.cpp.

Referenced by ReferenceFrames::iauEqeq94().

double normalizeAngle double  a  )  [static, protected]
 

Normalize angle into the range -pi <= a < +pi.

Definition at line 781 of file ReferenceFrames.cpp.

Referenced by ReferenceFrames::doodsonArguments(), ReferenceFrames::earthRotationAngle(), ReferenceFrames::iauEqeq94(), ReferenceFrames::iauGmst00(), ReferenceFrames::iauGmst82(), and ReferenceFrames::nutationAngles().

void nutationAngles CommonTime  TT,
double &  dpsi,
double &  deps
[static, protected]
 

Nutation angles by IAU 1980 model.

Definition at line 859 of file ReferenceFrames.cpp.

References gpstk::cos(), ReferenceFrames::normalizeAngle(), and gpstk::sin().

Referenced by ReferenceFrames::iauEqeq94().

Matrix< double > Rx const double &  angle  )  [static]
 

Rotate a matrix about the x-axis.

Definition at line 793 of file ReferenceFrames.cpp.

References gpstk::cos(), and gpstk::sin().

Referenced by ReferenceFrames::iauNmat().

Matrix< double > Ry const double &  angle  )  [static]
 

Rotate a matrix about the y-axis.

Definition at line 807 of file ReferenceFrames.cpp.

References gpstk::cos(), and gpstk::sin().

Referenced by ReferenceFrames::iauPmat76().

Matrix< double > Rz const double &  angle  )  [static]
 

Rotate a matrix about the z-axis.

Definition at line 821 of file ReferenceFrames.cpp.

References gpstk::cos(), and gpstk::sin().

Referenced by ReferenceFrames::iauNmat(), and ReferenceFrames::iauPmat76().

int setJPLEphFile std::string  filename  )  throw (Exception) [inline, static]
 

Open the given binary file,.

Parameters:
filename name of binary file to be read.
Returns:
0 success, -3 input stream is not open or not valid -4 header has not yet been read.
Exceptions:
if a gap in time is found between consecutive records.

Definition at line 61 of file ReferenceFrames.hpp.

void test  )  [static]
 

some test

Definition at line 714 of file ReferenceFrames.cpp.

References ReferenceFrames::J2kPosVelToECEF().

void XYZ2BLH double  xyz[3],
double  blh[3]
[static]
 

Definition at line 1207 of file ReferenceFrames.cpp.

References gpstk::sqrt().

void XYZ2ENU double  blh[3],
double  xyz[3],
double  enu[3]
[static]
 

Definition at line 1270 of file ReferenceFrames.cpp.

References ReferenceFrames::BLH2XYZ(), gpstk::cos(), and gpstk::sin().


The documentation for this class was generated from the following files:
Generated on Tue May 21 03:31:40 2013 for GPS ToolKit Software Library by  doxygen 1.3.9.1