UNPKG

@thi.ng/vectors

Version:

Optimized 2d/3d/4d and arbitrary length vector operations, support for memory mapping/layouts

25 lines (24 loc) 712 B
import { radians2 } from "./radians.js"; const distHaversineLatLon = (a, b, r = 6371) => { a = radians2([], a); b = radians2([], b); return __dist(a[0], a[1], b[0], b[1], r); }; const distHaversineLonLat = (a, b, r = 6371) => { a = radians2([], a); b = radians2([], b); return __dist(a[1], a[0], b[1], b[0], r); }; const distHaversine = distHaversineLonLat; const { cos } = Math; const __dist = (lat1, lon1, lat2, lon2, r) => { const dlat = 0.5 - cos(lat2 - lat1) * 0.5; const dlon = (1 - cos(lon2 - lon1)) * 0.5; const combined = dlat + cos(lat1) * cos(lat2) * dlon; return 2 * r * Math.asin(Math.sqrt(combined)); }; export { distHaversine, distHaversineLatLon, distHaversineLonLat };