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 : Vector) : 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 : Vector) : 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 () : undefined

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 : Vector) : 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 : Vector) : 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.

.toJSON () : Object

Returns a JSON object representation of this instance.

.fromJSON (json : Object) : this

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

Source

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