geolib
Version:
Library to provide basic geospatial operations like distance calculation, decoding of sexagesimal coordinates etc.
1 lines • 1.06 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _getDistance=_interopRequireDefault(require("./getDistance"));var _robustAcos=_interopRequireDefault(require("./robustAcos"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const getDistanceFromLine=function(point,lineStart,lineEnd){let accuracy=arguments.length>3&&arguments[3]!==undefined?arguments[3]:1;const d1=(0,_getDistance.default)(lineStart,point,accuracy);const d2=(0,_getDistance.default)(point,lineEnd,accuracy);const d3=(0,_getDistance.default)(lineStart,lineEnd,accuracy);const alpha=Math.acos((0,_robustAcos.default)((d1*d1+d3*d3-d2*d2)/(2*d1*d3)));const beta=Math.acos((0,_robustAcos.default)((d2*d2+d3*d3-d1*d1)/(2*d2*d3)));const pointAtLineStart=d1===0;const pointAtLineEnd=d2===0;if(pointAtLineStart||pointAtLineEnd){return 0}const lineLengthZero=d3===0;if(lineLengthZero){return d1}if(alpha>Math.PI/2){return d1}if(beta>Math.PI/2){return d2}return Math.sin(alpha)*d1};var _default=exports.default=getDistanceFromLine;