12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- "use strict";
- var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- var bearing_1 = __importDefault(require("@turf/bearing"));
- var helpers_1 = require("@turf/helpers");
- var rhumb_bearing_1 = __importDefault(require("@turf/rhumb-bearing"));
- /**
- * Finds the angle formed by two adjacent segments defined by 3 points. The result will be the (positive clockwise)
- * angle with origin on the `startPoint-midPoint` segment, or its explementary angle if required.
- *
- * @name angle
- * @param {Coord} startPoint Start Point Coordinates
- * @param {Coord} midPoint Mid Point Coordinates
- * @param {Coord} endPoint End Point Coordinates
- * @param {Object} [options={}] Optional parameters
- * @param {boolean} [options.explementary=false] Returns the explementary angle instead (360 - angle)
- * @param {boolean} [options.mercator=false] if calculations should be performed over Mercator or WGS84 projection
- * @returns {number} Angle between the provided points, or its explementary.
- * @example
- * turf.angle([5, 5], [5, 6], [3, 4]);
- * //=45
- */
- function angle(startPoint, midPoint, endPoint, options) {
- if (options === void 0) { options = {}; }
- // Optional Parameters
- if (!helpers_1.isObject(options)) {
- throw new Error("options is invalid");
- }
- // Validation
- if (!startPoint) {
- throw new Error("startPoint is required");
- }
- if (!midPoint) {
- throw new Error("midPoint is required");
- }
- if (!endPoint) {
- throw new Error("endPoint is required");
- }
- // Rename to shorter variables
- var A = startPoint;
- var O = midPoint;
- var B = endPoint;
- // Main
- var azimuthAO = helpers_1.bearingToAzimuth(options.mercator !== true ? bearing_1.default(A, O) : rhumb_bearing_1.default(A, O));
- var azimuthBO = helpers_1.bearingToAzimuth(options.mercator !== true ? bearing_1.default(B, O) : rhumb_bearing_1.default(B, O));
- var angleAO = Math.abs(azimuthAO - azimuthBO);
- // Explementary angle
- if (options.explementary === true) {
- return 360 - angleAO;
- }
- return angleAO;
- }
- exports.default = angle;
|