Fast segment 2D intersection, that includes edge cases, such as segments touching points, or one segment being on top of the other.
import{intersection,findIntersection}from'segment-intersection';constisect=findIntersection(x0,y0,x1,y1,x2,y2,x3,y3);console.log(isect);// 0, 1 or 2console.log(intersection);// [[x, y], [x, y]]isect === 0means the segments do not intersect.isect === 1your intersection point isintersection[0].isect === 2your segments are overlapping and you have 2 intersection points,intersection[0]andintersection[1].
Also, you can write into an existing array:
import{findIntersection}from'segment-intersection';constintersection=[[0,0],[0,0],];constisect=findIntersection(x0,y0,x1,y1,x2,y2,x3,y3,intersection);- segment-intersection x 12,139,495 ops/sec ±0.81% (88 runs sampled)
- exact-segment-intersect x 1,149,191 ops/sec ±2.38% (89 runs sampled)
- segseg x 5,492,533 ops/sec ±4.01% (86 runs sampled)
npm run devnpm run demonpm run buildnpm run lintnpm run testnpm run test:watchnpm run coverageCopyright (c) Alex Milevski (@w8r)
