segment2
v0.2.0segment2
2d line segment
install
npm install segment2
or include it in the browser
use
var Segment2 = require('segment2');
var Vec2 = require('vec2');
var s = new Segment2(Vec2(0, 0), Vec2(10, 0));
console.log(s.midpoint().toString()); // (5, 0)
console.log(s.intersect(Segment2(Vec2(5, 10), Vec2(5, -10))).toString()) // (5, 0)
properties
.start
- the starting point of the line
.end
- the ending point of the line
methods
fn change([fn])
Add a listener to be called when the line changes. Returns fn
callback signature: function(segment2, vec2) {}
where segment2
is the segment that changed and vec2
is the component that changed
ignore([fn])
Remove a listener, or all of them if fn
is not passed
clone()
Create a copy of this segment.
note: this function uses this.constructor
to create clones of subclasses.
Pass segmentCtor
if you have subclassed Segment2
Pass vecCtor
if you have subclassed Vec2
length()
return the length of the line segment
lengthSquared()
return the length of this line segment (squared)
closestPointTo(vec2)
return the closest point on this segment to the passed vec2
containsPoint(vec2)
return true if vec2
lies on the segment
midpoint()
return the vec2 equidistant from segment2.start
and segment.end
slope()
return the computed slope of this line segment.
note: this function will return Infinity
for vertical lines
rotate(rads[, origin [, returnNew]])
apply a rotation to the current start/end points around origin
. If origin
is not passed the midpoint is used. If returnNew
is truthy, a new Segment2
instance will be returnd instead of applying the result on this
note: calling it like seg.rotate(Math.PI, true)
is also valid and will return a copy of seg
rotated around seg
's midpoint.
collinear(seg)
returns true
when the passed seg
is collinear with this
parallel(seg)
returns true
when the passed seg
is parallel with this
license
MIT (see: license.txt)