HermiteSpline

new Cesium.HermiteSpline(options)

A Hermite spline is a cubic interpolating spline. Points, incoming tangents, outgoing tangents, and times must be defined for each control point. The outgoing tangents are defined for points [0, n - 2] and the incoming tangents are defined for points [1, n - 1]. For example, when interpolating a segment of the curve between points[i] and points[i + 1], the tangents at the points will be outTangents[i] and inTangents[i], respectively.
参数名称 类型 描述信息
options object Object with the following properties:
参数名称 类型 描述信息
times Array.<number> An array of strictly increasing, unit-less, floating-point times at each point. The values are in no way connected to the clock time. They are the parameterization for the curve.
points Array.<Cartesian3> The array of control points.
inTangents Array.<Cartesian3> The array of incoming tangents at each control point.
outTangents Array.<Cartesian3> The array of outgoing tangents at each control point.
Throws:
  • DeveloperError : points.length must be greater than or equal to 2.
  • DeveloperError : times.length must be equal to points.length.
  • DeveloperError : inTangents and outTangents must have a length equal to points.length - 1.
  • DeveloperError : inTangents and outTangents must be of the same type as points.
使用示例:
// Create a G<sup>1</sup> continuous Hermite spline
const times = [ 0.0, 1.5, 3.0, 4.5, 6.0 ];
const spline = new Cesium.HermiteSpline({
    times : times,
    points : [
        new Cesium.Cartesian3(1235398.0, -4810983.0, 4146266.0),
        new Cesium.Cartesian3(1372574.0, -5345182.0, 4606657.0),
        new Cesium.Cartesian3(-757983.0, -5542796.0, 4514323.0),
        new Cesium.Cartesian3(-2821260.0, -5248423.0, 4021290.0),
        new Cesium.Cartesian3(-2539788.0, -4724797.0, 3620093.0)
    ],
    outTangents : [
        new Cesium.Cartesian3(1125196, -161816, 270551),
        new Cesium.Cartesian3(-996690.5, -365906.5, 184028.5),
        new Cesium.Cartesian3(-2096917, 48379.5, -292683.5),
        new Cesium.Cartesian3(-890902.5, 408999.5, -447115)
    ],
    inTangents : [
        new Cesium.Cartesian3(-1993381, -731813, 368057),
        new Cesium.Cartesian3(-4193834, 96759, -585367),
        new Cesium.Cartesian3(-1781805, 817999, -894230),
        new Cesium.Cartesian3(1165345, 112641, 47281)
    ]
});

const p0 = spline.evaluate(times[0]);
参考:

成员(属性)

readonly inTangents : Array.<Cartesian3>

An array of incoming tangents at each control point.

readonly outTangents : Array.<Cartesian3>

An array of outgoing tangents at each control point.
An array of control points.

readonly times : Array.<number>

An array of times for the control points.

方法

static Cesium.HermiteSpline.createC1(options)HermiteSpline

Creates a spline where the tangents at each control point are the same. The curves are guaranteed to be at least in the class C1.
参数名称 类型 描述信息
options object Object with the following properties:
参数名称 类型 描述信息
times Array.<number> The array of control point times.
points Array.<Cartesian3> The array of control points.
tangents Array.<Cartesian3> The array of tangents at the control points.
返回值:
A hermite spline.
Throws:
使用示例:
const points = [
    new Cesium.Cartesian3(1235398.0, -4810983.0, 4146266.0),
    new Cesium.Cartesian3(1372574.0, -5345182.0, 4606657.0),
    new Cesium.Cartesian3(-757983.0, -5542796.0, 4514323.0),
    new Cesium.Cartesian3(-2821260.0, -5248423.0, 4021290.0),
    new Cesium.Cartesian3(-2539788.0, -4724797.0, 3620093.0)
];

// Add tangents
const tangents = new Array(points.length);
tangents[0] = new Cesium.Cartesian3(1125196, -161816, 270551);
const temp = new Cesium.Cartesian3();
for (let i = 1; i < tangents.length - 1; ++i) {
    tangents[i] = Cesium.Cartesian3.multiplyByScalar(Cesium.Cartesian3.subtract(points[i + 1], points[i - 1], temp), 0.5, new Cesium.Cartesian3());
}
tangents[tangents.length - 1] = new Cesium.Cartesian3(1165345, 112641, 47281);

const spline = Cesium.HermiteSpline.createC1({
    times : times,
    points : points,
    tangents : tangents
});

static Cesium.HermiteSpline.createClampedCubic(options)HermiteSpline|LinearSpline

Creates a clamped cubic spline. The tangents at the interior control points are generated to create a curve in the class C2.
参数名称 类型 描述信息
options object Object with the following properties:
参数名称 类型 描述信息
times Array.<number> The array of control point times.
points Array.<number> | Array.<Cartesian3> The array of control points.
firstTangent Cartesian3 The outgoing tangent of the first control point.
lastTangent Cartesian3 The incoming tangent of the last control point.
返回值:
A hermite spline, or a linear spline if less than 3 control points were given.
Throws:
  • DeveloperError : points, times, firstTangent and lastTangent are required.
  • DeveloperError : points.length must be greater than or equal to 2.
  • DeveloperError : times.length must be equal to points.length.
  • DeveloperError : firstTangent and lastTangent must be of the same type as points.
使用示例:
// Create a clamped cubic spline above the earth from Philadelphia to Los Angeles.
const spline = Cesium.HermiteSpline.createClampedCubic({
    times : [ 0.0, 1.5, 3.0, 4.5, 6.0 ],
    points : [
        new Cesium.Cartesian3(1235398.0, -4810983.0, 4146266.0),
        new Cesium.Cartesian3(1372574.0, -5345182.0, 4606657.0),
        new Cesium.Cartesian3(-757983.0, -5542796.0, 4514323.0),
        new Cesium.Cartesian3(-2821260.0, -5248423.0, 4021290.0),
        new Cesium.Cartesian3(-2539788.0, -4724797.0, 3620093.0)
    ],
    firstTangent : new Cesium.Cartesian3(1125196, -161816, 270551),
    lastTangent : new Cesium.Cartesian3(1165345, 112641, 47281)
});

static Cesium.HermiteSpline.createNaturalCubic(options)HermiteSpline|LinearSpline

Creates a natural cubic spline. The tangents at the control points are generated to create a curve in the class C2.
参数名称 类型 描述信息
options object Object with the following properties:
参数名称 类型 描述信息
times Array.<number> The array of control point times.
points Array.<Cartesian3> The array of control points.
返回值:
A hermite spline, or a linear spline if less than 3 control points were given.
Throws:
使用示例:
// Create a natural cubic spline above the earth from Philadelphia to Los Angeles.
const spline = Cesium.HermiteSpline.createNaturalCubic({
    times : [ 0.0, 1.5, 3.0, 4.5, 6.0 ],
    points : [
        new Cesium.Cartesian3(1235398.0, -4810983.0, 4146266.0),
        new Cesium.Cartesian3(1372574.0, -5345182.0, 4606657.0),
        new Cesium.Cartesian3(-757983.0, -5542796.0, 4514323.0),
        new Cesium.Cartesian3(-2821260.0, -5248423.0, 4021290.0),
        new Cesium.Cartesian3(-2539788.0, -4724797.0, 3620093.0)
    ]
});

clampTime(time)number

Clamps the given time to the period covered by the spline.
参数名称 类型 描述信息
time number The time.
返回值:
The time, clamped to the animation period.
Evaluates the curve at a given time.
参数名称 类型 描述信息
time number The time at which to evaluate the curve.
result Cartesian3 可选 The object onto which to store the result.
返回值:
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], where t0 is the first element in the array times and tn is the last element in the array times.

findTimeInterval(time)number

Finds an index i in times such that the parameter time is in the interval [times[i], times[i + 1]].
参数名称 类型 描述信息
time number The time.
返回值:
The index for the element at the start of the interval.
Throws:
  • DeveloperError : time must be in the range [t0, tn], where t0 is the first element in the array times and tn is the last element in the array times.

wrapTime(time)number

Wraps the given time to the period covered by the spline.
参数名称 类型 描述信息
time number The time.
返回值:
The time, wrapped around to the updated animation.