https://github.com/w8r/segment-intersection
Simple two segment intersection
https://github.com/w8r/segment-intersection
geometry segment-intersection
Last synced: 8 months ago
JSON representation
Simple two segment intersection
- Host: GitHub
- URL: https://github.com/w8r/segment-intersection
- Owner: w8r
- License: mit
- Created: 2022-08-02T22:11:26.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-02-18T21:39:43.000Z (about 2 years ago)
- Last Synced: 2025-06-21T03:52:26.625Z (8 months ago)
- Topics: geometry, segment-intersection
- Language: TypeScript
- Homepage: https://w8r.github.io/segment-intersection
- Size: 354 KB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# `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
```ts
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[0]` and `intersection[1]`.
Also, you can write into an existing array:
```ts
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
```bash
npm run dev
```
### Build Playground (preview)
```bash
npm run demo
```
### Build Library
```bash
npm run build
```
### Lint
```bash
npm run lint
```
### Test
```bash
npm run test
```
### Test + Watch
```bash
npm run test:watch
```
### Test + Coverage
```bash
npm run coverage
```
## License
[MIT License](./LICENSE)
Copyright (c) Alex Milevski ([@w8r](https://github.com/w8r))