Normal vector and distance for a sphere
Stability: 1 - Experimental
Normal vector and a distance function to determine central angle between normal vectors.
npm install n-vector
npm run sketch
var NVector = require'n-vector';var position1 = NVectorfromLatLon31.565665 -96.811523;var position2 = NVectorfromLatLon31.465952 -97.026443;var centralAngle = NVectordistanceposition1 position2;// 0.0036406600953623955var greatCircleDistanceInKm = centralAngle * 6371; // Earth radius ~6371km// 23.194645467553823 kmvar greatCircleDistanceInMi = centralAngle * 3959; // Earth radius ~3959mi// 14.413373317539724 mi
The normal vector to the Earth ellipsoid (called n-vector) is a non-singular position representation that turns out to be very convenient for practical position calculations.
The non-singular aspect of n-vector makes the calculations required simple and without special cases to consider that are present when dealing with crossing prime meridian and at the Earth poles. For a deeper and more precise explanation see A Non-singular Horizontal Position Representation.
DEGREES_TO_RADIANS: Number 0.0174532925, multiplier to convert decimal degrees into radians.
a: NVector First normal vector.
b: NVector Second normal vector.
b(multiply by sphere radius to determine the great circle distance).
Returns a central angle between two instances of
NVector. To get actual distance, multiply the central angle by the estimate of Earth's radius (if it was a perfect sphere), 6371km or 3959mi.
latitude: Number Latitude in decimal degrees (ex: 31.565665).
longitude: Number Longitude in decimal degrees (ex: -96.811523).
Creates a new
NVector instance from given latitude and longitude.
x: Number NVector "x" component.
y: Number NVector "y" component.
z: Number NVector "z" component.
Creates a new
The implementation has been sourced from: