line-intersect
Line vs line, point vs line in 2D space
Math is mostly from here.
Install
npm install line-intersect
API
es modules
import {
checkIntersection,
colinearPointWithinSegment
} from 'line-intersect';
commonjs modules
const {
checkIntersection,
colinearPointWithinSegment
} = require('line-intersect');
checkIntersection(x1, y1, x2, y2, x3, y3, x4, y4)
Given a line segment from (x1, y1) to (x2, y2) and line segment from (x3, y3) to (x4, y4), check if the line segments intersect.
Parameters
- x1, y1, x2, y2 - 1st line segment
- x3, y3, x4, y4 - 2nd line segment
All params are Numbers and are required.
Returns
A read-only Object that looks like
{
type: 'none' | 'parallel' | 'colinear'
}
// or
{
type: 'intersecting',
point: {
x: number,
y: number
}
}
point
is only exists when type == 'intersecting'
type |
What it means | Are the line segments touching? |
---|---|---|
none | Line segments are not intersecting | No |
parallel | Line segments are not intersecting but they are parallel to eachother | No |
colinear | Line segments are on the same line and may be overlapping. Use colinearPointWithinSegment() to check |
Maybe |
intersecting | Line segments intersect at exactly one point | Yes |
colinearPointWithinSegment(px, py, x1, y1, x2, y2)
Given a point (px, py) that is on the same line as line segment (x1, y1) to (x2, y2), check if the point is within the line segment.
Parameters
- px, py - Point to check
- x1, y1, x2, y2 - Line segment
All params are Numbers and are required.
Returns
true
if point is within the line segment, false
otherwise.
License
MIT