Curve

An abstract base class for creating a Curve object that contains methods for interpolation. For an array of Curves see CurvePath.

Constructor

Curve()

This constructor creates a new Curve.

Properties

.arcLengthDivisions : Integer

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.

Methods

.getPoint(t : Float, optionalTarget : Vector2 | Vector3) → Vector

t — A position on the curve. Must be in the range [0, 1].
optionalTarget — (optional) If specified, the result will be copied into this vector, otherwise a new Vector will be created.

Returns a vector for a given position on the curve.

.getPointAt(u : Float, optionalTarget : Vector2 | Vector3) → Vector

u — A position on the curve according to the arc length. Must be in the range [0, 1].
optionalTarget — (optional) If specified, the result will be copied into this vector, otherwise a new Vector will be created.

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

.getPoints(divisions : Integer) → Array

divisions — number of pieces to divide the curve into. Default is 5.

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

.getSpacedPoints(divisions : Integer) → Array

divisions — number of pieces to divide the curve into. Default is 5.

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

.getLength() → Float

Get total curve arc length.

.getLengths(divisions : Integer) → Array

Get list of cumulative segment lengths.

.updateArcLengths()

Update the cumlative 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.

.getUtoTmapping(u : Float, distance : Float) → Float

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.

.getTangent(t : Float, optionalTarget : Vector2 | Vector3) → Vector

t — A position on the curve. Must be in the range [0, 1].
optionalTarget — (optional) If specified, the result will be copied into this vector, otherwise a new vector will be created.

Returns a unit vector tangent at t. 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.

.getTangentAt(u : Float, optionalTarget : Vector2 | Vector3) → Vector

u — A position on the curve according to the arc length. Must be in the range [0, 1].
optionalTarget — (optional) If specified, the result will be copied into this vector, otherwise a new vector will be created.

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

.computeFrenetFrames(segments : Integer, closed : Boolean) → Object

Generates the Frenet Frames. Requires a curve definition in 3D space. Used in geometries like TubeGeometry or ExtrudeGeometry.

.clone() → Curve

Creates a clone of this instance.

.copy(source : Curve) → this

Copies another Curve object to this instance.

Source

For more info on how to obtain the source code of this module see this page.