ECEF Coordinate System
An in depth explanation of the ECEF coordinate system and how it’s used in the WRLD maps to render the globe accurately. This section also illustrates examples on how to convert from the familiar Mercator projection (Latitude-Longitude) to the more accurate ECEF system.
ECEF
Our ECEF coordinate system is a subtle variation of the Earth Centred Earth Fixed system that we find more appropriate. This coordinate system has a few postulates listed below:
- The origin (0,0,0) is the centre of mass of the earth.
- The positive X axis passes through the Americas at LatLong(0, -90)
- The positive Y axis passes through the South-North pole
- The positive Z axis passes through the prime meridian (0 longitude) at LatLong(0, 0)
For simplicity, we consider the Earth a perfect sphere of radius 6,378,100m. Therefore the exact ECEF position of the north pole would be (0, 6378100.0, 0).
Note: All units are in metres.
Visualised, the axes of our ECEF space would look like:
ECEF and Lat-Long Conversions
Lat-Long to ECEF
To convert from Latitude-Longitude pairs (which are usually in degrees) to ECEF metres:
In the above example the altitude is by default taken to be 0.
Altitude in the LatLongAltitude
type is measured in metres above the surface of the perfect sphere (which is considered sea level).
While this is an approximation the standard error remains rather low.
Both types LatLong
and LatLongAltitude
are interchangeable although LatLongAltitude
is the base/common type between the two.
ECEF to Lat-Long
You can quickly convert between an ECEF Vector3D and a LatLongAltitude
as such:
Positioning Objects on the Surface
ECEF Tangent Coordinate Frame
Apps often need to position and orient objects in a coordinate frame that is tangential to the Earth’s surface. For some point on the Earth’s surface, the patch of the Earth sphere that is locally around that point is approximately flat. We can use this tangent plane to define a local coordinate system that is useful for positioning objects relative to this reference frame.
The up direction is perpendicular to the tangent plane – so is in the same direction as a ray from the Earth’s centre passing through our ECEF point on the sphere surface.
The forward and right directions lie on the tangent plane, perpendicular to each other.
Conventionally, we use a left-handed coordinate system, where:
- The positive X axis points right
- The positive Y axis points up
- The positive Z axis points forward
We provide a class to assist in defining such a coordinate frame: EcefTangentBasis. This can be constructed from an ECEF point and a forward “heading” direction. The class uses these to create the 3 orthogonal basis direction vectors, constrained as described above.