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:
xyzEarth-centered, Earth-fixed (ECEF) cartesian coordinates.datumA datum describing Earth's shape and gravity field.
Returns:
Tuple of (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:
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:
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 shape or values are invalid.
The documentation for this class was generated from the following file cpp/include/inertialsim/geodesy/geodetic.h