Skip to content

Namespace inertialsim::geodesy::geodetic

Namespace List > inertialsim > geodesy > geodetic

Public Functions

Type Name
std::pair< Array3D, TransformMatrixArray > FromEcef (const Vector3D & xyz, const GeodeticDatum & datum=WGS84)
Geodetic coordinates from ECEF coordinates.
std::pair< Array3D, TransformMatrixArray > FromGeodetic (const Array3D & lla)
Geodetic coordinates from geodetic coordinates.
Scalar1D GeocentricRadius (const Scalar1D & latitude, const GeodeticDatum & datum=WGS84)
Calculate the geocentric radius of curvature.
Scalar1D MeridianRadius (const Scalar1D & latitude, const GeodeticDatum & datum=WGS84)
Calculate the meridian radius of curvature.
Scalar1D NormalRadius (const Scalar1D & latitude, const GeodeticDatum & datum=WGS84)
Calculate the normal radius of curvature.
Array3D Validate (const Array3D & lla)
Validates inputs meet geodetic coordinate conventions.

Public Functions Documentation

function FromEcef

Geodetic coordinates from ECEF coordinates.

std::pair< Array3D, TransformMatrixArray > inertialsim::geodesy::geodetic::FromEcef (
    const Vector3D & xyz,
    const GeodeticDatum & datum=WGS84
) 

Uses the Vermeille algorithm (Reference [25]) for conversion. This algorithm is accurate for all points outside the evolute (~43km ball around Earth's center).

By convention, geodetic coordinates are specified with a latitude, longitude, altitude tuple. The local basis of these coordinates is a left-handed north-east-up frame. The transform returned is for the right-handed north-east-down (NED) local basis.

Parameters:

  • xyz Earth-centered, Earth-fixed (ECEF) cartesian coordinates.
  • datum A datum describing Earth's shape and gravity field.

Returns:

Tuple of (geodetic coordinates, NED-to-ECEF transform matrices).

Exception:

  • std::invalid_argument if any point is too close to Earth's center.

function FromGeodetic

Geodetic coordinates from geodetic coordinates.

std::pair< Array3D, TransformMatrixArray > inertialsim::geodesy::geodetic::FromGeodetic (
    const Array3D & lla
) 

Validates the input coordinates and returns identity transforms.

Parameters:

  • lla Geodetic coordinates (latitude, longitude, altitude).

Returns:

Tuple of (validated lla coordinates, identity transform matrices).


function GeocentricRadius

Calculate the geocentric radius of curvature.

Scalar1D inertialsim::geodesy::geodetic::GeocentricRadius (
    const Scalar1D & latitude,
    const GeodeticDatum & datum=WGS84
) 

Radius is calculated at the given geodetic latitude.

Parameters:

  • latitude Geodetic latitude in radians.
  • datum A datum describing Earth's shape and gravity field.

Returns:

Geocentric radius of curvature (meters).


function MeridianRadius

Calculate the meridian radius of curvature.

Scalar1D inertialsim::geodesy::geodetic::MeridianRadius (
    const Scalar1D & latitude,
    const GeodeticDatum & datum=WGS84
) 

Radius is calculated at the given geodetic latitude.

Parameters:

  • latitude Geodetic latitude in radians.
  • datum A datum describing Earth's shape and gravity field.

Returns:

Meridian radius of curvature (meters).


function NormalRadius

Calculate the normal radius of curvature.

Scalar1D inertialsim::geodesy::geodetic::NormalRadius (
    const Scalar1D & latitude,
    const GeodeticDatum & datum=WGS84
) 

Radius is calculated at the given geodetic latitude. The normal radius of curvature is also known as the prime vertical radius of curvature.

Parameters:

  • latitude Geodetic latitude in radians.
  • datum A datum describing Earth's shape and gravity field.

Returns:

Normal radius of curvature (meters).


function Validate

Validates inputs meet geodetic coordinate conventions.

Array3D inertialsim::geodesy::geodetic::Validate (
    const Array3D & lla
) 

Inputs are validated for shape, size, and range. The input must be a 3xN matrix where N is the number of coordinate sets. Latitude must be in range [-pi/2, pi/2] (South Pole to North Pole). Longitude must be in range [-pi, 2*pi] and will be wrapped to (-pi, pi].

Parameters:

  • lla Geodetic coordinates (latitude, longitude, altitude).

Returns:

Validated coordinates with longitude wrapped to (-pi, pi].

Exception:

  • std::invalid_argument if shape or values are invalid.


The documentation for this class was generated from the following file cpp/include/inertialsim/geodesy/geodetic.h