Module geodesy.conversion

Geographic/geocentric coordinate conversion with a robust inverse.

The module implements the EPSG 9602 geographic/geocentric operation family. Forward conversion follows the ellipsoidal Cartesian equations; reverse conversion uses a hybrid kernel designed to retain ordinary terrestrial throughput while providing deterministic, numerically robust behaviour for difficult interior and near-evolute positions.

Standards

EPSG method 9602 -- Geographic/geocentric conversions.

Units

Ellipsoidal height, geocentric X/Y/Z, and ellipsoid axes use the same caller-selected linear unit.

Numerics

The oblate reverse combines a Fukushima/Halley fast path with a stabilized Vermeille/Karney-style fallback. Public float reverse conversion uses double working precision. The exact geocentre is rejected because it has no unique geodetic inverse.

Performance

Checked conversion paths are allocation-free. The hybrid reverse was selected only after numerical acceptance and controlled release-mode benchmarking against the previous implementation and external references.

Validation

Validated with EPSG/IOGP reference data, deterministic difficult-domain corpora, GeographicLib, and PROJ where its semantics provide a suitable independent comparison.

See Also

GeodeticCoordinate, GeocentricCoordinate, Ellipsoid

Date

September 26, 2026

Functions

NameDescription
geocentricToGeodetic(source, ellipsoid) Throwing convenience wrapper for tryGeocentricToGeodetic.
geodeticToGeocentric(source, ellipsoid) Throwing convenience wrapper for tryGeodeticToGeocentric.
tryGeocentricToGeodetic(source, ellipsoid, result) Convert geocentric Cartesian coordinates to geodetic coordinates.
tryGeodeticToGeocentric(source, ellipsoid, result) Convert a geodetic coordinate to geocentric Cartesian coordinates.