Curve → CurvePath →

# Path

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

## Code Example

    const path = new THREE.Path();
    path.lineTo( 0, 0.8 );
    path.quadraticCurveTo( 0, 1, 0.2, 1 );
    path.lineTo( 1, 1 );
    const points = path.getPoints();
    const geometry = new THREE.BufferGeometry().setFromPoints( points );
    const material = new THREE.LineBasicMaterial( { color: 0xffffff } );
    const line = new THREE.Line( geometry, material );
    scene.add( line );

## Constructor

### new Path ( points : Array.<Vector2> )

Constructs a new path.

points | An array of 2D points defining the path.

## Properties

### .currentPoint : Vector2

The current offset of the path. Any new curve added will start here.

## Methods

### .absarc ( aX : number, aY : number, aRadius : number, aStartAngle : number, aEndAngle : number, aClockwise : boolean ) : Path

Adds an absolutely positioned arc as an instance of EllipseCurve to the path.

aX | The x coordinate of the center of the arc. Default is `0`.
aY | The y coordinate of the center of the arc. Default is `0`.
aRadius | The radius of the arc. Default is `1`.
aStartAngle | The start angle in radians. Default is `0`.
aEndAngle | The end angle in radians. Default is `Math.PI*2`.
aClockwise | Whether to sweep the arc clockwise or not. Default is `false`.

Returns: A reference to this path.

### .absellipse ( aX : number, aY : number, xRadius : number, yRadius : number, aStartAngle : number, aEndAngle : number, aClockwise : boolean, aRotation : number ) : Path

Adds an absolutely positioned ellipse as an instance of EllipseCurve to the path.

aX | The x coordinate of the absolute center of the ellipse. Default is `0`.
aY | The y coordinate of the absolute center of the ellipse. Default is `0`.
xRadius | The radius of the ellipse in the x axis. Default is `1`.
yRadius | The radius of the ellipse in the y axis. Default is `1`.
aStartAngle | The start angle in radians. Default is `0`.
aEndAngle | The end angle in radians. Default is `Math.PI*2`.
aClockwise | Whether to sweep the ellipse clockwise or not. Default is `false`.
aRotation | The rotation angle of the ellipse in radians, counterclockwise from the positive X axis. Default is `0`.

Returns: A reference to this path.

### .arc ( aX : number, aY : number, aRadius : number, aStartAngle : number, aEndAngle : number, aClockwise : boolean ) : Path

Adds an arc as an instance of EllipseCurve to the path, positioned relative to the current point.

aX | The x coordinate of the center of the arc offsetted from the previous curve. Default is `0`.
aY | The y coordinate of the center of the arc offsetted from the previous curve. Default is `0`.
aRadius | The radius of the arc. Default is `1`.
aStartAngle | The start angle in radians. Default is `0`.
aEndAngle | The end angle in radians. Default is `Math.PI*2`.
aClockwise | Whether to sweep the arc clockwise or not. Default is `false`.

Returns: A reference to this path.

### .bezierCurveTo ( aCP1x : number, aCP1y : number, aCP2x : number, aCP2y : number, aX : number, aY : number ) : Path

Adds an instance of CubicBezierCurve to the path by connecting the current point with the given one.

aCP1x | The x coordinate of the first control point.
aCP1y | The y coordinate of the first control point.
aCP2x | The x coordinate of the second control point.
aCP2y | The y coordinate of the second control point.
aX | The x coordinate of the end point.
aY | The y coordinate of the end point.

Returns: A reference to this path.

### .ellipse ( aX : number, aY : number, xRadius : number, yRadius : number, aStartAngle : number, aEndAngle : number, aClockwise : boolean, aRotation : number ) : Path

Adds an ellipse as an instance of EllipseCurve to the path, positioned relative to the current point

aX | The x coordinate of the center of the ellipse offsetted from the previous curve. Default is `0`.
aY | The y coordinate of the center of the ellipse offsetted from the previous curve. Default is `0`.
xRadius | The radius of the ellipse in the x axis. Default is `1`.
yRadius | The radius of the ellipse in the y axis. Default is `1`.
aStartAngle | The start angle in radians. Default is `0`.
aEndAngle | The end angle in radians. Default is `Math.PI*2`.
aClockwise | Whether to sweep the ellipse clockwise or not. Default is `false`.
aRotation | The rotation angle of the ellipse in radians, counterclockwise from the positive X axis. Default is `0`.

Returns: A reference to this path.

### .lineTo ( x : number, y : number ) : Path

Adds an instance of LineCurve to the path by connecting the current point with the given one.

x | The x coordinate of the end point.
y | The y coordinate of the end point.

Returns: A reference to this path.

### .moveTo ( x : number, y : number ) : Path

Moves Path#currentPoint to the given point.

x | The x coordinate.
y | The y coordinate.

Returns: A reference to this path.

### .quadraticCurveTo ( aCPx : number, aCPy : number, aX : number, aY : number ) : Path

Adds an instance of QuadraticBezierCurve to the path by connecting the current point with the given one.

aCPx | The x coordinate of the control point.
aCPy | The y coordinate of the control point.
aX | The x coordinate of the end point.
aY | The y coordinate of the end point.

Returns: A reference to this path.

### .setFromPoints ( points : Array.<Vector2> ) : Path

Creates a path from the given list of points. The points are added to the path as instances of LineCurve.

points | An array of 2D points.

Returns: A reference to this path.

### .splineThru ( pts : Array.<Vector2> ) : Path

Adds an instance of SplineCurve to the path by connecting the current point with the given list of points.

pts | An array of points in 2D space.

Returns: A reference to this path.

## Source

src/extras/core/Path.js