| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 | 'use strict';var circle = require('@turf/circle');var lineArc = require('@turf/line-arc');var meta = require('@turf/meta');var helpers = require('@turf/helpers');var invariant = require('@turf/invariant');function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }var circle__default = /*#__PURE__*/_interopDefaultLegacy(circle);var lineArc__default = /*#__PURE__*/_interopDefaultLegacy(lineArc);/** * Creates a circular sector of a circle of given radius and center {@link Point}, * between (clockwise) bearing1 and bearing2; 0 bearing is North of center point, positive clockwise. * * @name sector * @param {Coord} center center point * @param {number} radius radius of the circle * @param {number} bearing1 angle, in decimal degrees, of the first radius of the sector * @param {number} bearing2 angle, in decimal degrees, of the second radius of the sector * @param {Object} [options={}] Optional parameters * @param {string} [options.units='kilometers'] miles, kilometers, degrees, or radians * @param {number} [options.steps=64] number of steps * @param {Properties} [options.properties={}] Translate properties to Feature Polygon * @returns {Feature<Polygon>} sector polygon * @example * var center = turf.point([-75, 40]); * var radius = 5; * var bearing1 = 25; * var bearing2 = 45; * * var sector = turf.sector(center, radius, bearing1, bearing2); * * //addToMap * var addToMap = [center, sector]; */function sector(center, radius, bearing1, bearing2, options) {  // Optional parameters  options = options || {};  if (!helpers.isObject(options)) throw new Error("options is invalid");  var properties = options.properties;  // validation  if (!center) throw new Error("center is required");  if (bearing1 === undefined || bearing1 === null)    throw new Error("bearing1 is required");  if (bearing2 === undefined || bearing2 === null)    throw new Error("bearing2 is required");  if (!radius) throw new Error("radius is required");  if (typeof options !== "object") throw new Error("options must be an object");  if (convertAngleTo360(bearing1) === convertAngleTo360(bearing2)) {    return circle__default['default'](center, radius, options);  }  var coords = invariant.getCoords(center);  var arc = lineArc__default['default'](center, radius, bearing1, bearing2, options);  var sliceCoords = [[coords]];  meta.coordEach(arc, function (currentCoords) {    sliceCoords[0].push(currentCoords);  });  sliceCoords[0].push(coords);  return helpers.polygon(sliceCoords, properties);}/** * Takes any angle in degrees * and returns a valid angle between 0-360 degrees * * @private * @param {number} alfa angle between -180-180 degrees * @returns {number} angle between 0-360 degrees */function convertAngleTo360(alfa) {  var beta = alfa % 360;  if (beta < 0) beta += 360;  return beta;}module.exports = sector;module.exports.default = sector;
 |