A LineString is a Curve which, once two points have been added to it, can never be less than two points long.
Inherits from
NAME | DESCRIPTION |
---|---|
ZOO.Geometry.LineString | Create a new LineString geometry |
removeComponent | Only allows removal of a point if there are three or more points in the linestring. |
intersects | Test for instersection between two geometries. |
getSortedSegments | {Array} An array of segment objects. |
splitWithSegment | Split this geometry with the given segment. |
split | Use this geometry (the source) to attempt to split a target geometry. |
splitWith | Split this geometry (the target) with the given geometry (the source). |
getVertices | Return a list of all points in this geometry. |
Create a new LineString geometry
Parameters
points {Array(ZOO.Geometry.Point)} An array of points used to generate the linestring
removeComponent: function(point)
Only allows removal of a point if there are three or more points in the linestring. (otherwise the result would be just a single point)
Parameters
point {ZOO.Geometry.Point} The point to be removed
intersects: function(geometry)
Test for instersection between two geometries. This is a cheapo implementation of the Bently-Ottmann algorigithm. It doesn’t really keep track of a sweep line data structure. It is closer to the brute force method, except that segments are sorted and potential intersections are only calculated when bounding boxes intersect.
Parameters
geometry {ZOO.Geometry}
Returns
{Boolean} The input geometry intersects this geometry.
getSortedSegments: function()
Returns
{Array} An array of segment objects. Segment objects have properties x1, y1, x2, and y2. The start point is represented by x1 and y1. The end point is represented by x2 and y2. Start and end are ordered so that x1 < x2.
splitWithSegment: function(seg,options)
Split this geometry with the given segment.
Parameters
Valid options
Returns
{Object} An object with lines and points properties. If the given segment intersects this linestring, the lines array will reference geometries that result from the split. The points array will contain all intersection points. Intersection points are sorted along the segment (in order from x1,y1 to x2,y2).
split: function(target,options)
Use this geometry (the source) to attempt to split a target geometry.
Parameters
Valid options
Returns
{Array} A list of geometries (of this same type as the target) that result from splitting the target with the source geometry. The source and target geometry will remain unmodified. If no split results, null will be returned. If mutual is true and a split results, return will be an array of two arrays - the first will be all geometries that result from splitting the source geometry and the second will be all geometries that result from splitting the target geometry.
splitWith: function(geometry,options)
Split this geometry (the target) with the given geometry (the source).
Parameters
Valid options
Returns
{Array} A list of geometries (of this same type as the target) that result from splitting the target with the source geometry. The source and target geometry will remain unmodified. If no split results, null will be returned. If mutual is true and a split results, return will be an array of two arrays - the first will be all geometries that result from splitting the source geometry and the second will be all geometries that result from splitting the target geometry.
getVertices: function(nodes)
Return a list of all points in this geometry.
Parameters
nodes {Boolean} For lines, only return vertices that are endpoints. If false, for lines, only vertices that are not endpoints will be returned. If not provided, all vertices will be returned.
Returns
{Array} A list of all vertices in the geometry.