English中文

CatmullRomSpline

new Cesium.CatmullRomSpline(options)

Catmull-Rom 样条线是三次样条线,其中控制点处的切线(第一个和最后一个控制点除外)是使用前一个和下一个控制点计算的。 Catmull-Rom 花键属于 C 级 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:
名称 Name 类型 Type 说明 Description
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 Cartesian3 控制点。 control points.
firstTangent Cartesian3 可选 optional 第一个控制点处的曲线正切。如果未给出正切,则将进行估计。 The tangent of the curve at the first control point. If the tangent is not given, it will be estimated.
lastTangent Cartesian3 可选 optional 最后一个控制点处的曲线正切。如果未给出正切,则将进行估计。 The tangent of the curve at the last control point. If the tangent is not given, it will be estimated.
抛出: Throws:
  • DeveloperError : points.length must be greater than or equal to 2.
  • DeveloperError :times.length必须等于points.length。 : times.length must be equal to points.length.
示例: Example:
// spline above the earth from Philadelphia to Los Angeles
const spline = new Cesium.CatmullRomSpline({
    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)
    ]
});

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:

成员 Members

第一个控制点处的切线。 The tangent at the first control point.
最后一个控制点处的切线。 The tangent at the last control point.
一个数组 An array of Cartesian3 控制点。 control points.

readonly times : Array.<number>

控制点的时间数组。 An array of times for the control points.

方法 Methods

clampTime(time)number

将给定时间限制为样条线覆盖的时间段。 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.
评估给定时间的曲线。 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], 其中 , 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]].
名称 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], 其中 , 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.
名称 Name 类型 Type 说明 Description
time number 时间。 The time.
返回: Returns:
时间,围绕着更新的动画。 The time, wrapped around to the updated animation.
需要帮助吗?获得答案的最快方法是从社区和团队那里获得答案 Need help? The fastest way to get answers is from the community and team on the Cesium Forum.