Skip to content

Namespace inertialsim::geodesy::geodetic

Namespace List > inertialsim > geodesy > geodetic

Geodetic coordinate conversions (internal API). More...

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.

Detailed Description

Internal API

This namespace is part of InertialSim's internal API. Most users should use the Coordinates class and its factory methods rather than calling these functions directly.

See also: Coordinates

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:

Pair containing:

  • 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:

Pair containing:

  • 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 dimensions or values are invalid.


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