Path class

A 2D path representation. The class provides methods for creating paths and contours of 2D shapes similar to the 2D Canvas API.

final path = Path();

path.lineTo( 0, 0.8 );
path.quadraticCurveTo( 0, 1, 0.2, 1 );
path.lineTo( 1, 1 );

final points = path.getPoints();

final geometry = BufferGeometry().setFromPoints( points );
final material = LineBasicMaterial( { color: 0xffffff } );

final line = Line( geometry, material );
scene.add( line );
Inheritance

Constructors

Path([List<Vector2>? points])
points -- (optional) array of Vector2.
Path.fromJson(Map<String, dynamic> json)

Properties

arcLengthDivisions ↔ int
This value determines the amount of divisions when calculating the cumulative segment lengths of a curve via getLengths. To ensure precision when using methods like getSpacedPoints, it is recommended to increase arcLengthDivisions if the curve is very large. Default is 200.
getter/setter pairinherited
autoClose ↔ bool
getter/setter pairinherited
cacheArcLengths ↔ List<double>?
getter/setter pairinherited
cacheLengths ↔ List<double>?
getter/setter pairinherited
currentPoint ↔ Vector2
getter/setter pairinherited
curves ↔ List<Curve>
getter/setter pairinherited
hashCode → int
The hash code for this object.
no setterinherited
isCubicBezierCurve ↔ bool
getter/setter pairinherited
isEllipseCurve ↔ bool
getter/setter pairinherited
isLineCurve ↔ bool
getter/setter pairinherited
isLineCurve3 ↔ bool
getter/setter pairinherited
isQuadraticBezierCurve ↔ bool
getter/setter pairinherited
isSplineCurve ↔ bool
getter/setter pairinherited
needsUpdate ↔ bool
getter/setter pairinherited
points ↔ List<Vector>
getter/setter pairinherited
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
userData ↔ Map<String, dynamic>
getter/setter pairinherited
v0 ↔ Vector
getter/setter pairinherited
v1 ↔ Vector
getter/setter pairinherited
v2 ↔ Vector
getter/setter pairinherited

Methods

absarc(double aX, double aY, double aRadius, double aStartAngle, double aEndAngle, [bool? aClockwise]) → Path
aX, aY -- The absolute center of the arc.
absellipse(double aX, double aY, double xRadius, double yRadius, double aStartAngle, double aEndAngle, [bool? aClockwise, double? aRotation]) → Path
aX, aY -- The absolute center of the ellipse.
add(Curve curve) → void
inherited
arc(double aX, double aY, double aRadius, double aStartAngle, double aEndAngle, [bool? aClockwise]) → Path
aX, aY -- The center of the arc offset from the last call.
bezierCurveTo(double aCP1x, double aCP1y, double aCP2x, double aCP2y, double aX, double aY) → Path
This creates a bezier curve from currentPoint with (cp1X, cp1Y) and (cp2X, cp2Y) as control points and updates currentPoint to x and y.
clone() → Curve
Creates a clone of this instance.
inherited
closePath() → void
Adds a lineCurve to close the path.
inherited
computeFrenetFrames(int segments, bool closed) → FrenetFrames
Generates the Frenet Frames. Requires a curve definition in 3D space. Used in geometries like TubeGeometry or ExtrudeGeometry.
inherited
copy(Curve source) → Path
Copies another name object to this instance.
override
ellipse(double aX, double aY, double xRadius, double yRadius, double aStartAngle, double aEndAngle, [bool? aClockwise, double? aRotation]) → Path
aX, aY -- The center of the ellipse offset from the last call.
fromJson(Map<String, dynamic> json) → Path
Copies the data from the given JSON object to this instance.
override
getCurveLengths() → List<double>
inherited
getLength() → double
Get total curve arc length
inherited
getLengths(int? divisions) → List<double>
Get list of cumulative segment lengths
inherited
getPoint(double t, [Vector? optionalTarget]) → Vector?
inherited
getPointAt(double u, [Vector? optionalTarget]) → Vector?
u - A position on the curve according to the arc length. Must be in the range 0, 1 .
inherited
getPoints([int divisions = 12]) → List<Vector?>
divisions -- number of pieces to divide the curve into. Default is 12.
inherited
getSpacedPoints([num divisions = 40, num offset = 0.0]) → List<Vector?>
divisions -- number of pieces to divide the curve into. Default is 5.
inherited
getTangent(double t, [Vector? optionalTarget]) → Vector
t - A position on the curve. Must be in the range 0, 1 .
inherited
getTangentAt(double u, [Vector? optionalTarget]) → Vector
u - A position on the curve according to the arc length. Must be in the range 0, 1 .
inherited
getUtoTmapping(double u, [double? distance]) → double
Given u in the range ( 0 .. 1 ), returns t also in the range ( 0 .. 1 ). u and t can then be used to give you points which are equidistant from the ends of the curve, using getPoint.
inherited
lineTo(double x, double y) → Path
Connects a LineCurve from currentPoint to x, y onto the path.
moveTo(double x, double y) → Path
Move the currentPoint to x, y.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
quadraticCurveTo(double aCPx, double aCPy, double aX, double aY) → Path
Creates a quadratic curve from currentPoint with cpX and cpY as control point and updates currentPoint to x and y.
setFromPoints(List<Vector2> points) → Path
points -- array of Vector2.
splineThru(List<Vector2> pts) → Path
points - An array of Vector2
toJson() → Map<String, dynamic>
Returns a JSON object representation of this instance.
override
toString() → String
A string representation of this object.
inherited
updateArcLengths() → void
Update the cumulative segment distance cache. The method must be called every time curve parameters are changed. If an updated curve is part of a composed curve like CurvePath, updateArcLengths must be called on the composed curve, too.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited