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:
xyzEarth-centered, Earth-fixed (ECEF) cartesian coordinates.datumA datum describing Earth's shape and gravity field.
Returns:
Pair containing:
- Geodetic coordinates
- NED-to-ECEF transform matrices
Exception:
std::invalid_argumentif 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:
llaGeodetic 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:
latitudeGeodetic latitude in radians.datumA 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:
latitudeGeodetic latitude in radians.datumA 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:
latitudeGeodetic latitude in radians.datumA datum describing Earth's shape and gravity field.
Returns:
Normal radius of curvature (meters).
function Validate¶
Validates inputs meet geodetic coordinate conventions.
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:
llaGeodetic coordinates (latitude, longitude, altitude).
Returns:
Validated coordinates with longitude wrapped to (-pi, pi].
Exception:
std::invalid_argumentif dimensions or values are invalid.
The documentation for this class was generated from the following file cpp/include/inertialsim/geodesy/geodetic.h