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.
Name | Type | Description | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
Object |
Object with the following properties:
|
Throws:
-
DeveloperError : points.length must be greater than or equal to 2.
-
DeveloperError : times.length must be equal to points.length.
Example:
// spline above the earth from Philadelphia to Los Angeles
var spline = new LSGlobe.CatmullRomSpline({
times : [ 0.0, 1.5, 3.0, 4.5, 6.0 ],
points : [
new LSGlobe.Cartesian3(1235398.0, -4810983.0, 4146266.0),
new LSGlobe.Cartesian3(1372574.0, -5345182.0, 4606657.0),
new LSGlobe.Cartesian3(-757983.0, -5542796.0, 4514323.0),
new LSGlobe.Cartesian3(-2821260.0, -5248423.0, 4021290.0),
new LSGlobe.Cartesian3(-2539788.0, -4724797.0, 3620093.0)
]
});
var p0 = spline.evaluate(times[i]); // equal to positions[i]
var p1 = spline.evaluate(times[i] + delta); // interpolated value when delta < times[i + 1] - times[i]
See:
Members
readonly firstTangent : Cartesian3
The tangent at the first control point.
readonly lastTangent : Cartesian3
The tangent at the last control point.
readonly points : Array.<Cartesian3>
An array of
Cartesian3
control points.
An array of times for the control points.
Methods
Clamps the given time to the period covered by the spline.
Name | Type | Description |
---|---|---|
time |
Number | The time. |
Returns:
The time, clamped to the animation period.
evaluate(time, result) → Cartesian3
Evaluates the curve at a given time.
Name | Type | Description |
---|---|---|
time |
Number | The time at which to evaluate the curve. |
result |
Cartesian3 | optional The object onto which to store the result. |
Returns:
The modified result parameter or a new instance of the point on the curve at the given time.
Throws:
-
DeveloperError : time must be in the range
[t0, tn]
, wheret0
is the first element in the arraytimes
andtn
is the last element in the arraytimes
.
Finds an index
i
in times
such that the parameter
time
is in the interval [times[i], times[i + 1]]
.
Name | Type | Description |
---|---|---|
time |
Number | The time. |
Returns:
The index for the element at the start of the interval.
Throws:
-
DeveloperError : time must be in the range
[t0, tn]
, wheret0
is the first element in the arraytimes
andtn
is the last element in the arraytimes
.
Wraps the given time to the period covered by the spline.
Name | Type | Description |
---|---|---|
time |
Number | The time. |
Returns:
The time, wrapped around to the updated animation.