Curve - Verge3D 用户手册 - Soft8Soft
Description: 了解如何在使用 Verge3D 制作的交互式 3D 应用程序中使用 Curve

# 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() → null

Update the cumlative segment distance cache.

### # .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) → Curve

Copies another Curve object to this instance.

### # .toJSON() → Object

Returns a JSON object representation of this instance.

### # .fromJSON(json : Object) → Curve

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

## 源代码

关于如何获取此模块的源代码，请查看 本页。