segment-intersection
Fast segment 2D intersection, that includes edge cases, such as segments touching points, or one segment being on top of the other.
API
import { intersection, findIntersection } from 'segment-intersection';
const isect = findIntersection(x0, y0, x1, y1, x2, y2, x3, y3);
console.log(isect); // 0, 1 or 2
console.log(intersection); // [[x, y], [x, y]]
isect === 0
means the segments do not intersect.isect === 1
your intersection point isintersection[0]
.isect === 2
your segments are overlapping and you have 2 intersection points,intersection[1]
andintersection[1]
.
Also, you can write into an existing array:
import { findIntersection } from 'segment-intersection';
const intersection = [
[0, 0],
[0, 0],
];
const isect = findIntersection(x0, y0, x1, y1, x2, y2, x3, y3, intersection);
Benchmark
- 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)
Run Playground
npm run dev
Build Playground (preview)
npm run demo
Build Library
npm run build
Lint
npm run lint
Test
npm run test
Test + Watch
npm run test:watch
Test + Coverage
npm run coverage
License
Copyright (c) Alex Milevski (@w8r)