logo
Published on

“插值”是什么?

Authors

插值是在热力图曲线等概念中经常要使用的技术,具体是什么呢

插值,在数学和计算机图形学中,是指在已知的离散数据点之间估算出未知的数值。简单来说,插值就是根据已有的点,推算出在这些点之间的值。

插值的基本概念

设想你有一组数据点,比如地图上的一系列经纬度位置(航迹、路径等)。这些点可能是在不同的时间或距离采集的,点与点之间是离散的。在进行动画时,我们希望生成平滑的运动,而不是实体突然跳跃到每个点上。这就需要插值来估算出每个点之间的过渡位置。

插值的例子

假设你有两点:

  • 点A:位置在 (0, 0),时间是 t=0
  • 点B:位置在 (10, 10),时间是 t=10

现在,如果你希望知道在 t=5 时实体的位置,你可以用插值计算出中间的位置。由于点A和点B是线性关系,你可以简单地通过插值得出:

  • t=5 时的位置是 (5, 5),这是点A和点B之间的中点。

Cesium 中的插值

在 Cesium.js 中,插值用来创建平滑的路径动画。对于路径上的每个位置(如飞行路线),你可能只定义了几个关键点(比如路径的起点、几个中间点和终点)。但 Cesium.js 需要在动画过程中连续更新实体的位置。因此,它会在这些关键点之间进行插值,生成平滑的过渡。

例如,SampledPositionProperty 就是一个插值的应用。它接收一系列时间点和对应的位置,并且 Cesium 会在这些时间点之间自动插值,以平滑计算出任意时刻的实体位置。

图形表示

想象你有一个曲线由几个离散点表示,如下图所示:

A ---- C ---- E

ACE 是已知位置,但如果你想知道 BD 之间的位置,插值可以帮助你找到这些点:

A - B - C - D - E

通过插值,BD 的位置将根据 AC,以及 CE 之间的关系计算出来。

插值的类型

  1. 线性插值(Linear Interpolation): 假设点与点之间是直线关系,按比例计算中间值。
  2. 非线性插值(Non-linear Interpolation): 假设点与点之间有曲线关系,可能使用更复杂的算法(例如贝塞尔曲线)来计算中间值。

在 Cesium 中的应用场景

  • 路径动画: 如果你为一个飞机设置了几个关键路径点,Cesium 会通过插值生成飞机在这些点之间的运动,使得它沿着平滑的曲线移动,而不是从一个点跳到另一个点。
  • 时间序列数据: 如果你有一个时间序列数据(如一个动态数据随时间变化),你可以使用插值估算出每一帧动画中的数据值。

总结

插值是为了在有限的关键数据点之间,计算出一个平滑的过渡值。在动画和图形处理(如 Cesium.js 中的路径动画)中,插值能够让运动显得更加自然和连续。

关于我

国 wei (Eric) Github

扫码加入独立开发微信群-二维码经常更新

关注公众号 开发副业,闲谈代码人生