CatmullRomSpline

A Catmull-Rom spline is a cubic spline where the tangent at control points, except the first and last, are computed using the previous and next control points. Catmull-Rom splines are in the class C1.

// spline above the earth from Philadelphia to Los Angeles
const spline = new CatmullRomSpline({
times : [ 0.0, 1.5, 3.0, 4.5, 6.0 ],
points : [
new Cartesian3(1235398.0, -4810983.0, 4146266.0),
new Cartesian3(1372574.0, -5345182.0, 4606657.0),
new Cartesian3(-757983.0, -5542796.0, 4514323.0),
new Cartesian3(-2821260.0, -5248423.0, 4021290.0),
new Cartesian3(-2539788.0, -4724797.0, 3620093.0)
]
});

const p0 = spline.evaluate(times[i]); // equal to positions[i]
const p1 = spline.evaluate(times[i] + delta); // interpolated value when delta < times[i + 1] - times[i]

See also

Constructors

Link copied to clipboard

Types

Link copied to clipboard
sealed interface ConstructorOptions

Properties

Link copied to clipboard

The tangent at the first control point.

Link copied to clipboard

The tangent at the last control point.

Link copied to clipboard

An array of Cartesian3 control points.

Link copied to clipboard

An array of times for the control points.

Functions

Link copied to clipboard
fun clampTime(time: Double): Double

Clamps the given time to the period covered by the spline.

Link copied to clipboard
fun evaluate(time: Double, result: Cartesian3? = definedExternally): Cartesian3

Evaluates the curve at a given time.

Link copied to clipboard

Finds an index i in times such that the parameter time is in the interval [times[i], times[i + 1]].

Link copied to clipboard
fun wrapTime(time: Double): Double

Wraps the given time to the period covered by the spline.