node package manager
We need your input. Help make JavaScript better: Take the 2017 JavaScript Ecosystem survey »



var intersection = require('intersection');
var seg2 = {start:{x:-1,y:2}, end:{x:5,y:2}};
var seg3 = {start:{x:1,y:-1}, end:{x:4,y:4}};

// {x:2.8,y:2}


.intersect(a,b) takes two line segments a and b and returns their point of intersection. Returns false if they are collinear or parallel.


.describe(a,b) takes two line segments a and b and returns a report about thier co-linearity, if they are parallel, and the intersection if defined.

var segA = {start:{x:3,y:0},end:{x:3,y:4}};

// colinear with segA
var segA_1 = {start:{x:3,y:-2},end:{x:3, y:9}};

// parallel but not colinear with seg1
var segA_2 = {start:{x:1, y:-1}, end:{x:1, y:5}};

// {colinear:true, parallel:true,intersection:undefined}

// {colinear:false, parallel:true,intersection:undefined}

// {colinear:false, parallel:false, intersection:{x:2.8,y:2}


Returns true if a and b are parallel line segments, false otherwise.


Returns true if a and b are collinear line segments, false otherwise. Collinear segments means the segments lie on the same line.


.intersect returns false if the two segments are co-linear or parallel.

Notes II

Intersection utilizes the fast cross-product method as outlined by Ronald Grahm in "Graphics Gems I".

Test Results and Benchmarks

From nodeunit test/test.js

nodeunit test.js 

✔ descriptionTest
✔ basicTest
✔ safeIntersectionTest
✔ testReadmeExamples

OK: 13 assertions (21ms)


There is a speed boost outlined by Mukesh Prasad in "Graphics Gems II" utilizing a same-side sign test.