index.js 888 B

1234567891011121314151617181920212223242526272829
  1. // index.ts
  2. import { getGeom } from "@turf/invariant";
  3. function booleanConcave(polygon) {
  4. const coords = getGeom(polygon).coordinates;
  5. if (coords[0].length <= 4) {
  6. return false;
  7. }
  8. let sign = false;
  9. const n = coords[0].length - 1;
  10. for (let i = 0; i < n; i++) {
  11. const dx1 = coords[0][(i + 2) % n][0] - coords[0][(i + 1) % n][0];
  12. const dy1 = coords[0][(i + 2) % n][1] - coords[0][(i + 1) % n][1];
  13. const dx2 = coords[0][i][0] - coords[0][(i + 1) % n][0];
  14. const dy2 = coords[0][i][1] - coords[0][(i + 1) % n][1];
  15. const zcrossproduct = dx1 * dy2 - dy1 * dx2;
  16. if (i === 0) {
  17. sign = zcrossproduct > 0;
  18. } else if (sign !== zcrossproduct > 0) {
  19. return true;
  20. }
  21. }
  22. return false;
  23. }
  24. var turf_boolean_concave_default = booleanConcave;
  25. export {
  26. booleanConcave,
  27. turf_boolean_concave_default as default
  28. };
  29. //# sourceMappingURL=index.js.map