Represents a 2D geometry consisting of a list of ordered points.
- Source:
- See:
-
- path2 for data structure information.
Examples
colorize([0,0,0,1], path2.fromPoints({ closed: true }, [[0,0], [4,0], [4,3]]))
{
"points": [[0,0], [4,0], [4,3]],
"isClosed": true,
"transforms": [1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],
"color": [0,0,0,1]
}
Methods
(static) appendArc(options, geometry) → {path2}
- Source:
- See:
Append a series of points to the given geometry that represent an arc. This implementation follows the SVG specifications.
Example
let p1 = path2.fromPoints({}, [[27.5,-22.96875]]);
p1 = path2.appendPoints([[27.5,-3.28125]], p1);
p1 = path2.appendArc({endpoint: [12.5, -22.96875], radius: [15, -19.6875]}, p1);
Parameters:
Name | Type | Description | |||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
Object | options for construction Properties
|
|||||||||||||||||||||||||||||||||||
geometry |
path2 | the path of which to append the arc |
Returns:
a new path with the appended points
- Type
- path2
(static) appendBezier(options, geometry) → {path2}
Append a series of points to the given geometry that represent a Bezier curve. The Bézier curve starts at the last point in the given geometry, and ends at the last control point. The other control points are intermediate control points to transition the curve from start to end points. The first control point may be null to ensure a smooth transition occurs. In this case, the second to last point of the given geometry is mirrored into the control points of the Bezier curve. In other words, the trailing gradient of the geometry matches the new gradient of the curve.
Example
let p5 = path2.create({}, [[10,-20]])
p5 = path2.appendBezier({controlPoints: [[10,-10],[25,-10],[25,-20]]}, p5);
p5 = path2.appendBezier({controlPoints: [null, [25,-30],[40,-30],[40,-20]]}, p5)
Parameters:
Name | Type | Description | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
Object | options for construction Properties
|
|||||||||||||||
geometry |
path2 | the path of which to appended points |
Returns:
a new path with the appended points
- Type
- path2
(static) appendPoints(points, geometry) → {path2}
Append the given list of points to the end of the given geometry.
Example
let newpath = appendPoints([[3, 4], [4, 5]], oldpath)
Parameters:
Name | Type | Description |
---|---|---|
points |
Array | the points (2D) to append to the given path |
geometry |
path2 | the given path |
Returns:
a new path with the appended points
- Type
- path2
(static) clone(geometry) → {path2}
Performs a shallow clone of the give geometry.
Parameters:
Name | Type | Description |
---|---|---|
geometry |
path2 | the geometry to clone |
Returns:
a new path
- Type
- path2
(static) close(geometry) → {path2}
Close the given geometry.
Parameters:
Name | Type | Description |
---|---|---|
geometry |
path2 | the path to close |
Returns:
a new path
- Type
- path2
(static) concat(…paths) → {path2}
Concatenate the given paths.
If both contain the same point at the junction, merge it into one. A concatenation of zero paths is an empty, open path. A concatenation of one closed path to a series of open paths produces a closed path. A concatenation of a path to a closed path is an error.
Example
let newpath = concat(fromPoints({}, [[1, 2]]), fromPoints({}, [[3, 4]]))
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
paths |
path2 |
<repeatable> |
the paths to concatenate |
Returns:
a new path
- Type
- path2
(static) create() → {path2}
Create an empty, open path.
Example
let newpath = create()
Returns:
a new path
- Type
- path2
(static) equals(a, b) → {Boolean}
Determine if the given paths are equal. For closed paths, this includes equality under point order rotation.
Parameters:
Name | Type | Description |
---|---|---|
a |
path2 | the first path to compare |
b |
path2 | the second path to compare |
Returns:
- Type
- Boolean
(static) fromCompactBinary(data) → {path2}
Create a new path from the given compact binary data.
Parameters:
Name | Type | Description |
---|---|---|
data |
TypedArray | compact binary data |
Returns:
a new path
- Type
- path2
(static) fromPoints(options, points) → {path2}
Create a new path from the given points. The points must be provided an array of points, where each point is an array of two numbers.
Parameters:
Name | Type | Description | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
Object | options for construction Properties
|
||||||||||
points |
Array | array of points (2D) from which to create the path |
Returns:
a new path
- Type
- path2
(static) isA(object) → {Boolean}
Determine if the given object is a path2 geometry.
Parameters:
Name | Type | Description |
---|---|---|
object |
Object | the object to interrogate |
Returns:
true if the object matches a path2
- Type
- Boolean
(static) reverse(geometry) → {path2}
Reverses the path so that the points are in the opposite order. This swaps the left (interior) and right (exterior) edges.
Example
let newpath = reverse(mypath)
Parameters:
Name | Type | Description |
---|---|---|
geometry |
path2 | the path to reverse |
Returns:
a new path
- Type
- path2
(static) toCompactBinary(geometry) → {TypedArray}
Produce a compact binary representation from the given path.
Parameters:
Name | Type | Description |
---|---|---|
geometry |
path2 | the path geometry |
Returns:
compact binary representation
- Type
- TypedArray
(static) toPoints(geometry) → {Array}
Produces an array of points from the given geometry. The returned array should not be modified as the data is shared with the geometry.
Example
let sharedpoints = toPoints(geometry)
Parameters:
Name | Type | Description |
---|---|---|
geometry |
path2 | the geometry |
Returns:
an array of points
- Type
- Array
(static) toString(geometry) → {String}
Create a string representing the contents of the given path.
Example
console.out(toString(path))
Parameters:
Name | Type | Description |
---|---|---|
geometry |
path2 | the path |
Returns:
a representative string
- Type
- String
(static) transform(matrix, geometry) → {path2}
Transform the given geometry using the given matrix. This is a lazy transform of the points, as this function only adjusts the transforms. The transforms are applied when accessing the points via toPoints().
Example
let newpath = transform(fromZRotation(TAU / 8), path)
Parameters:
Name | Type | Description |
---|---|---|
matrix |
mat4 | the matrix to transform with |
geometry |
path2 | the geometry to transform |
Returns:
a new path
- Type
- path2
(static) validate(object)
Determine if the given object is a valid path2. Checks for valid data points, and duplicate points.
If the geometry is not valid, an exception will be thrown with details of the geometry error.
Parameters:
Name | Type | Description |
---|---|---|
object |
Object | the object to interrogate |
Throws:
-
error if the geometry is not valid
- Type
- Error