index.js 998 B

123456789101112131415161718192021222324252627282930313233
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. var invariant_1 = require("@turf/invariant");
  4. /**
  5. * Takes a ring and return true or false whether or not the ring is clockwise or counter-clockwise.
  6. *
  7. * @name booleanClockwise
  8. * @param {Feature<LineString>|LineString|Array<Array<number>>} line to be evaluated
  9. * @returns {boolean} true/false
  10. * @example
  11. * var clockwiseRing = turf.lineString([[0,0],[1,1],[1,0],[0,0]]);
  12. * var counterClockwiseRing = turf.lineString([[0,0],[1,0],[1,1],[0,0]]);
  13. *
  14. * turf.booleanClockwise(clockwiseRing)
  15. * //=true
  16. * turf.booleanClockwise(counterClockwiseRing)
  17. * //=false
  18. */
  19. function booleanClockwise(line) {
  20. var ring = invariant_1.getCoords(line);
  21. var sum = 0;
  22. var i = 1;
  23. var prev;
  24. var cur;
  25. while (i < ring.length) {
  26. prev = cur || ring[0];
  27. cur = ring[i];
  28. sum += (cur[0] - prev[0]) * (cur[1] + prev[1]);
  29. i++;
  30. }
  31. return sum > 0;
  32. }
  33. exports.default = booleanClockwise;