0.0.1 • Published 12 years ago

intersection v0.0.1

Weekly downloads
163
License
-
Repository
github
Last release
12 years ago

intersection

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}};

intersection.intersect(seg2,seg3); 
// {x:2.8,y:2}

.descriptionSegments(a,b)

.descriptionSegments(a,b) takes two line segments a and b and returns a report about thier co-linearity, if they are paralell, 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}};

intersection.descriptionSegments(segA,segA_1);
// {colinear:true, parallel:true,intersection:undefined}

intersection.descriptionSegments(segA,segA_2);
// {colinear:false, parallel:true,intersection:undefined}

intersection.descriptionSegments(segA,segB);
// {colinear:false, parallel:false, intersection:{x:2.8,y:2}

Notes

.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 

test.js
✔ descriptionTest
✔ basicTest
✔ safeIntersectionTest
✔ testReadmeExamples

OK: 13 assertions (21ms)

TODO

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