w8r / segment-intersection

Simple two segment intersection

Home Page:https://w8r.github.io/segment-intersection

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

segment-intersection checks npm

Screenshot

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 is intersection[0].
  • isect === 2 your segments are overlapping and you have 2 intersection points, intersection[1] and intersection[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

MIT License

Copyright (c) Alex Milevski (@w8r)

About

Simple two segment intersection

https://w8r.github.io/segment-intersection

License:MIT License


Languages

Language:TypeScript 82.9%Language:JavaScript 10.1%Language:CSS 4.0%Language:HTML 2.7%Language:Shell 0.3%