📄 threejs/Core/Extras/CatmullRomCurve3

File: CatmullRomCurve3.md | Updated: 11/15/2025


title: CatmullRomCurve3 category: Core layout: docs

CatmullRomCurve3

A curve representing a Catmull-Rom spline.

Code Example

//Create a closed wavey loop
const curve = new THREE.CatmullRomCurve3( [
	new THREE.Vector3( -10, 0, 10 ),
	new THREE.Vector3( -5, 5, 5 ),
	new THREE.Vector3( 0, 0, 0 ),
	new THREE.Vector3( 5, -5, 5 ),
	new THREE.Vector3( 10, 0, 10 )
] );
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 );

Constructor

new CatmullRomCurve3( points : Array.<Vector3>, closed : boolean, curveType : 'centripetal' | 'chordal' | 'catmullrom', tension : number )

Constructs a new Catmull-Rom curve.

points | An array of 3D points defining the curve.
---|---
closed | Whether the curve is closed or not. Default is false.
curveType | The curve type. Default is 'centripetal'.
tension | Tension of the curve. Default is 0.5.

Properties

.closed : boolean

Whether the curve is closed or not.

Default is false.

.curveType : 'centripetal' | 'chordal' | 'catmullrom'

The curve type.

Default is 'centripetal'.

.isCatmullRomCurve3 : boolean (readonly)

This flag can be used for type testing.

Default is true.

.points : Array.<Vector3>

An array of 3D points defining the curve.

.tension : number

Tension of the curve.

Default is 0.5.

Methods

.getPoint( t : number, optionalTarget : Vector3 ) : Vector3

Returns a point on the curve.

t | A interpolation factor representing a position on the curve. Must be in the range [0,1].
---|---
optionalTarget | The optional target vector the result is written to.

Overrides: Curve#getPoint

Returns: The position on the curve.

Source

src/extras/curves/CatmullRomCurve3.js