UNPKG

geolib

Version:

Library to provide basic geospatial operations like distance calculation, decoding of sexagesimal coordinates etc.

1 lines 1.33 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _getLatitude=_interopRequireDefault(require("./getLatitude"));var _getLongitude=_interopRequireDefault(require("./getLongitude"));var _toRad=_interopRequireDefault(require("./toRad"));var _toDeg=_interopRequireDefault(require("./toDeg"));var _constants=require("./constants");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const computeDestinationPoint=function(start,distance,bearing){let radius=arguments.length>3&&arguments[3]!==undefined?arguments[3]:6371000;const lat=(0,_getLatitude.default)(start);const lng=(0,_getLongitude.default)(start);const delta=distance/radius;const theta=(0,_toRad.default)(bearing);const phi1=(0,_toRad.default)(lat);const lambda1=(0,_toRad.default)(lng);const phi2=Math.asin(Math.sin(phi1)*Math.cos(delta)+Math.cos(phi1)*Math.sin(delta)*Math.cos(theta));let lambda2=lambda1+Math.atan2(Math.sin(theta)*Math.sin(delta)*Math.cos(phi1),Math.cos(delta)-Math.sin(phi1)*Math.sin(phi2));let longitude=(0,_toDeg.default)(lambda2);if(longitude<_constants.MINLON||longitude>_constants.MAXLON){lambda2=(lambda2+3*Math.PI)%(2*Math.PI)-Math.PI;longitude=(0,_toDeg.default)(lambda2)}return{latitude:(0,_toDeg.default)(phi2),longitude}};var _default=exports.default=computeDestinationPoint;