index.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // index.ts
  2. import { circle } from "@turf/circle";
  3. import { destination } from "@turf/destination";
  4. import { lineString } from "@turf/helpers";
  5. function lineArc(center, radius, bearing1, bearing2, options = {}) {
  6. const steps = options.steps || 64;
  7. const angle1 = convertAngleTo360(bearing1);
  8. const angle2 = convertAngleTo360(bearing2);
  9. const properties = !Array.isArray(center) && center.type === "Feature" ? center.properties : {};
  10. if (angle1 === angle2) {
  11. return lineString(
  12. circle(center, radius, options).geometry.coordinates[0],
  13. properties
  14. );
  15. }
  16. const arcStartDegree = angle1;
  17. const arcEndDegree = angle1 < angle2 ? angle2 : angle2 + 360;
  18. let alpha = arcStartDegree;
  19. const coordinates = [];
  20. let i = 0;
  21. const arcStep = (arcEndDegree - arcStartDegree) / steps;
  22. while (alpha <= arcEndDegree) {
  23. coordinates.push(
  24. destination(center, radius, alpha, options).geometry.coordinates
  25. );
  26. i++;
  27. alpha = arcStartDegree + i * arcStep;
  28. }
  29. return lineString(coordinates, properties);
  30. }
  31. function convertAngleTo360(alpha) {
  32. let beta = alpha % 360;
  33. if (beta < 0) {
  34. beta += 360;
  35. }
  36. return beta;
  37. }
  38. var turf_line_arc_default = lineArc;
  39. export {
  40. turf_line_arc_default as default,
  41. lineArc
  42. };
  43. //# sourceMappingURL=index.js.map