geodeticConversion

Defines

_USE_MATH_DEFINES

Functions

Eigen::Vector3d PCI2PCPF(Eigen::Vector3d pciPosition, double J20002Pfix[3][3])

Collection of utility functions for converting in/out of planet-centric reference frames.

The geodeticConversion library contains simple transformations between inertial coordinates and planet-fixed coordinates in a general way.

No support is provided for non-spherical bodies. Transformations are scripted from Vallado.

Converts from a planet-centered inertial position (i.e., J2000 ECI) to a planet-centered, planet-fixed position given a rotation matrix.

Parameters
  • pciPosition – : [m] Position vector in PCI coordinates

  • J20002Pfix – : [-] 3x3 rotation matrix representing the rotation between PCPF and ECI frames

Returns

pcpfPosition: [m] Position vector in PCPF coordinates

Eigen::Vector3d PCPF2LLA(Eigen::Vector3d pciPosition, double planetRadius)

Converts from a planet-centered, planet-fixed coordinates to latitude/longitude/altitude (LLA) coordinates given a planet radius.

Parameters
  • pcpfPosition – : [m] Position vector in PCPF coordinates

  • planetRad – : [m] Planetary radius, assumed to be constant (i.e., spherical)

Returns

llaPosition: Final position in latitude/longitude/altitude coordinates [0] : [rad] latitude above planetary equator [1] : [rad] longitude across planetary meridian [2] : [alt] altitude above planet radius

Eigen::Vector3d PCI2LLA(Eigen::Vector3d pciPosition, double J20002Pfix[3][3], double planetRad)

Converts from a planet-centered inertial coordinates to latitutde/longitude/altitude (LLA) coordinates given a planet radius and rotation matrix.

Parameters
  • pciPosition – : [m] Position vector in PCPF coordinates

  • J20002Pfix – : planet DCM

  • planetRad – : [m] Planetary radius, assumed to be constant (i.e., spherical)

Returns

llaPosition: Final position in latitude/longitude/altitude coordinates [0] : [rad] latitude above planetary equator [1] : [rad] longitude across planetary meridian [2] : [alt] altitude above planet radius

Eigen::Vector3d LLA2PCPF(Eigen::Vector3d llaPosition, double planetRad)

Converts from a Lat/Long/Altitude coordinates to planet-centered,planet-fixed coordinates given a planet radius.

Parameters
  • llaPosition – : [m] Position vector in PCPF coordinates

  • planetRad – : [m] Planetary radius, assumed to be constant (i.e., spherical)

Returns

pcpfPosition: [m] Final position in the planet-centered, planet-fixed frame.

Eigen::Vector3d PCPF2PCI(Eigen::Vector3d pcpfPosition, double J20002Pfix[3][3])

Converts from a Lat/Long/Altitude coordinates to planet-centered inertialcoordinates given a planet radius and rotation matrix.

Parameters
  • pcpfPosition – : [m] Position vector in planet centered, planet fixed coordinates

  • J20002Pfix – : [-] Rotation between inertial and pcf coordinates.

Returns

pciPosition: [m] Final position in the planet-centered inertial frame.

Eigen::Vector3d LLA2PCI(Eigen::Vector3d llaPosition, double J20002Pfix[3][3], double planetRad)

Converts from a planet-centered inertial coordinates to latitutde/longitude/altitude (LLA) coordinates given a planet radius and rotation matrix.

Parameters
  • llaPosition – Final position in latitude/longitude/altitude coordinates [0] : [rad] latitude above planetary equator [1] : [rad] longitude across planetary meridian [2] : [alt] altitude above planet radius

  • J20002Pfix – : rotation matrix between inertial and PCPF frames

  • planetRad – : [m] Planetary radius, assumed to be constant (i.e., spherical)

Returns

pciPosition : [m] Position in inertial coordinates.

Eigen::Matrix3d C_PCPF2SEZ(double lat, double longitude)