Create a smooth 2D cubic bezier curve, defined by a start point, endpoint and two control points.

Example

const curve = new THREE.CubicBezierCurve(
new THREE.Vector2(-10, 0),
new THREE.Vector2(-5, 15),
new THREE.Vector2(20, 15),
new THREE.Vector2(10, 0));
const points = curve.getPoints(50);
const geometry = new THREE.BufferGeometry().setFromPoints(points);
const material = new THREE.LineBasicMaterial({
color: 0xff0000
});
// Create the final object to add to the scene
const curveObject = new THREE.Line(geometry, material);

See

Hierarchy (view full)

Constructors

  • This constructor creates a new CubicBezierCurve.

    Parameters

    • Optional v0: Vector2

      The starting point. Default is new THREE.Vector2().

    • Optional v1: Vector2

      The first control point. Default is new THREE.Vector2().

    • Optional v2: Vector2

      The second control point. Default is new THREE.Vector2().

    • Optional v3: Vector2

      The ending point. Default is new THREE.Vector2().

    Returns CubicBezierCurve

Properties

arcLengthDivisions: number

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 Value

200

Remarks

Expects a Integer

isCubicBezierCurve: true = true

Read-only flag to check if a given object is of type CubicBezierCurve.

Remarks

This is a constant value

Default Value

true

type: string

A Read-only string to check if this object type.

Remarks

Sub-classes will update this value.

Default Value

CubicBezierCurve

The starting point.

Default Value

new THREE.Vector2()

The first control point.

Default Value

new THREE.Vector2()

The second control point.

Default Value

new THREE.Vector2()

The ending point.

Default Value

new THREE.Vector2()

Methods

  • Creates a clone of this instance.

    Returns this

  • Generates the Frenet Frames

    Parameters

    • segments: number

      Expects a Integer

    • Optional closed: boolean

    Returns {
        binormals: Vector3[];
        normals: Vector3[];
        tangents: Vector3[];
    }

    Remarks

    Requires a Curve definition in 3D space Used in geometries like TubeGeometry or ExtrudeGeometry.

  • Copies another Curve object to this instance.

    Parameters

    Returns this

  • Copies the data from the given JSON object to this instance.

    Parameters

    • json: {}

      Returns this

    • Get total Curve arc length.

      Returns number

    • Get list of cumulative segment lengths.

      Parameters

      • Optional divisions: number

        Expects a Integer

      Returns number[]

    • Returns a vector for a given position on the curve.

      Parameters

      • t: number

        A position on the curve. Must be in the range [ 0, 1 ]. Expects a Float

      • Optional optionalTarget: Vector2

        If specified, the result will be copied into this Vector, otherwise a new Vector will be created. Default new T.

      Returns Vector2

    • Returns a vector for a given position on the Curve according to the arc length.

      Parameters

      • u: number

        A position on the Curve according to the arc length. Must be in the range [ 0, 1 ]. Expects a Float

      • Optional optionalTarget: Vector2

        If specified, the result will be copied into this Vector, otherwise a new Vector will be created. Default new T.

      Returns Vector2

    • Returns a set of divisions +1 points using .getPoint | getPoint(t).

      Parameters

      • Optional divisions: number

        Number of pieces to divide the Curve into. Expects a Integer. Default 5

      Returns Vector2[]

    • Returns a set of divisions +1 equi-spaced points using .getPointAt | getPointAt(u).

      Parameters

      • Optional divisions: number

        Number of pieces to divide the Curve into. Expects a Integer. Default 5

      Returns Vector2[]

    • Returns a unit vector tangent at t

      Parameters

      • t: number

        A position on the curve. Must be in the range [ 0, 1 ]. Expects a Float

      • Optional optionalTarget: Vector2

        If specified, the result will be copied into this Vector, otherwise a new Vector will be created.

      Returns Vector2

      Remarks

      If the derived Curve does not implement its tangent derivation, two points a small delta apart will be used to find its gradient which seems to give a reasonable approximation.

    • Returns tangent at a point which is equidistant to the ends of the Curve from the point given in .getTangent.

      Parameters

      • u: number

        A position on the Curve according to the arc length. Must be in the range [ 0, 1 ]. Expects a Float

      • Optional optionalTarget: Vector2

        If specified, the result will be copied into this Vector, otherwise a new Vector will be created.

      Returns Vector2

    • Given u in the range [ 0, 1 ],

      Parameters

      • u: number

        Expects a Float

      • distance: number

        Expects a Float

      Returns number

      t also in the range [ 0, 1 ]. Expects a Float.

      Remarks

      u and t can then be used to give you points which are equidistant from the ends of the curve, using .getPoint.

    • Returns a JSON object representation of this instance.

      Returns {}

      • Update the cumulative segment distance cache

        Returns void

        Remarks

        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.