# [name]

Represents a spline.

## Constructor

### [name]( [page:Array points] )

Initialises the spline with *points*, which are the places through which the spline will go.

## Properties

### [property:Array points]

## Methods

### [method:null initFromArray]( [page:Array a] )

a — array of triplets containing x, y, z coordinates
Initialises using the data in the array as a series of points. Each value in *a* must be another array with three values, where a[n] is v, the value for the *nth* point, and v[0], v[1] and v[2] are the x, y and z coordinates of that point n, respectively.

### [method:Vector3 getPoint]( [page:Integer k] )

k — point index
Return the interpolated point at *k*.

### [method:Array getControlPointsArray]( )

Returns an array with triplets of x, y, z coordinates that correspond to the current control points.

### [method:Object getLength]( [page:Integer nSubDivisions] )

nSubDivisions — number of subdivisions between control points. Default is *100*.
Returns an object with the two properties. The property .[page:Number total] contains the length of the spline when using nSubDivisions. The property .[page:Array chunkLength] contains an array with the total length from the beginning of the spline to the end of that chunk.

### [method:null reparametrizeByArcLength]( [page:Float samplingCoef] )

samplingCoef — how many intermediate values to use between spline points
Modifies the spline so that it looks similar to the original but has its points distributed in such way that moving along the spline it's done at a more or less constant speed. The points should also appear more uniformly spread along the curve.
This is done by resampling the original spline, with the density of sampling controlled by *samplingCoef*. Here it's interesting to note that denser sampling is not necessarily better: if sampling is too high, you may get weird kinks in curvature.

## Source

[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]