📄 threejs/Addons/Curves/module-NURBSUtils

File: module-NURBSUtils.md | Updated: 11/15/2025


title: module-NURBSUtils category: Unknown layout: docs

NURBSUtils

Import

NURBSUtils is an addon, and must be imported explicitly, see Installation#Addons.

import * as NURBSUtils from 'three/addons/curves/NURBSUtils.js';

Methods

.calcBSplineDerivatives( p : number, U : Array.<number>, P : Array.<Vector4>, u : number, nd : number ) : Array.<Vector4> (inner)

Calculates derivatives of a B-Spline. See The NURBS Book, page 93, algorithm A3.2.

p | The degree.
---|---
U | The knot vector.
P | The control points
u | The parametric point.
nd | The number of derivatives.

Returns: An array[d+1] with derivatives.

.calcBSplinePoint( p : number, U : Array.<number>, P : Array.<Vector4>, u : number ) : Vector4 (inner)

Calculates B-Spline curve points. See The NURBS Book, page 82, algorithm A3.1.

p | The degree of the B-Spline.
---|---
U | The knot vector.
P | The control points
u | The parametric point.

Returns: The point for given u.

.calcBasisFunctionDerivatives( span : number, u : number, p : number, n : number, U : Array.<number> ) : Array.<Array.<number>> (inner)

Calculates basis functions derivatives. See The NURBS Book, page 72, algorithm A2.3.

span | The span in which u lies.
---|---
u | The parametric point.
p | The degree.
n | number of derivatives to calculate
U | The knot vector.

Returns: An array[n+1][p+1] with basis functions derivatives.

.calcBasisFunctions( span : number, u : number, p : number, U : Array.<number> ) : Array.<number> (inner)

Calculates basis functions. See The NURBS Book, page 70, algorithm A2.2.

span | The span in which u lies.
---|---
u | The parametric value.
p | The degree.
U | The knot vector.

Returns: Array[p+1] with basis functions values.

.calcKoverI( k : number, i : number ) : number (inner)

Calculates "K over I".

k | The K value.
---|---
i | The I value.

Returns: k!/(i!(k-i)!)

.calcNURBSDerivatives( p : number, U : Array.<number>, P : Array.<Vector4>, u : number, nd : number ) : Array.<Vector3> (inner)

Calculates NURBS curve derivatives. See The NURBS Book, page 127, algorithm A4.2.

p | The degree.
---|---
U | The knot vector.
P | The control points in homogeneous space.
u | The parametric point.
nd | The number of derivatives.

Returns: array with derivatives for rational curve.

.calcRationalCurveDerivatives( Pders : Array.<Vector4> ) : Array.<Vector3> (inner)

Calculates derivatives (0-nd) of rational curve. See The NURBS Book, page 127, algorithm A4.2.

Pders | Array with derivatives.
---|---

Returns: An array with derivatives for rational curve.

.calcSurfacePoint( p : number, q : number, U : Array.<number>, V : Array.<number>, P : Array.<Array.<Vector4>>, u : number, v : number, target : Vector3 ) (inner)

Calculates a rational B-Spline surface point. See The NURBS Book, page 134, algorithm A4.3.

p | The first degree of B-Spline surface.
---|---
q | The second degree of B-Spline surface.
U | The first knot vector.
V | The second knot vector.
P | The control points in homogeneous space.
u | The first parametric point.
v | The second parametric point.
target | The target vector.

.calcVolumePoint( p : number, q : number, r : number, U : Array.<number>, V : Array.<number>, W : Array.<number>, P : Array.<Array.<Array.<Vector4>>>, u : number, v : number, w : number, target : Vector3 ) (inner)

Calculates a rational B-Spline volume point. See The NURBS Book, page 134, algorithm A4.3.

p | The first degree of B-Spline surface.
---|---
q | The second degree of B-Spline surface.
r | The third degree of B-Spline surface.
U | The first knot vector.
V | The second knot vector.
W | The third knot vector.
P | The control points in homogeneous space.
u | The first parametric point.
v | The second parametric point.
w | The third parametric point.
target | The target vector.

.findSpan( p : number, u : number, U : Array.<number> ) : number (inner)

Finds knot vector span.

p | The degree.
---|---
u | The parametric value.
U | The knot vector.

Returns: The span.

Source

examples/jsm/curves/NURBSUtils.js