“线性插值”是什么意思?

8

我经常在WPF动画中听到“线性插值”这个术语。什么是“线性插值”?你能给我举个例子来说明何时使用“线性插值”吗?


3
关于它的意义:http://en.wikipedia.org/wiki/Linear_interpolation线性插值指在两个已知数据点之间通过直线拟合来估算未知数据点的值。这种方法通常用于简单的数值计算和图形绘制中。线性插值可以被视为是一种近似方法,因为它基于初步的假设,即在两个已知数据点之间的值变化量是连续的。 - stakx - no longer contributing
2个回答

25

线性意味着直线(直的)。

插值是在两个点之间找到一个点的行为。与此相反,外推是在一条线的两端寻找一个点。

因此,线性插值是使用一条直线在两个点之间找到一个点。

例如:

     *(5,10)
    /
   /
  /
 /
*(0,0)

您可以使用线性插值的两个端点来获取沿着该直线的点:

(1,2)
(2,4)
(3,6)
(4,8)

并使用线性 外推 来获得(例如):

(1000,2000)
(-1e27,-2e27)

在动画中,假设你有一个弹跳的球,它从(60,22)位置移动到(198,12)位置,需要10秒钟的时间。

如果动画速率为每秒10帧,则可以使用以下公式计算其在任何时间的位置:

x0 = 60, y0 = 22
x1 = 198, y1 = 12
frames = 100
for t = 0 to frames:
    x = (x1 - x0) * (t / frames) + x0
    y = (y1 - y0) * (t / frames) + y0

底部的这两个公式是线性插值的例子。当百分比为50%(即 t == 50)时:

x = (198 - 60) * (50 / 100) + 60
  =     138    *    0.5     + 60
  =            69           + 60
  =                  129

y = (12 - 22) * (50 / 100) + 22
  =    -10    *    0.5     + 22
  =           -5           + 22
  =                   17

(129,17) 是起始位置和结束位置之间的中点。


1
这也可能意味着在恒定速率方面是线性的,因此插值不会改变速率,无论您在哪里。 - Sam Holder
我喜欢这个解释,直截了当且易于理解。 - neevek
太棒了,这是我第一次理解线性插值,回答得真好 :) - Azad

1
例如,当您希望使用固定速度将一个元素从一个位置移动到另一个位置时,您可以使用线性插值来在起始位置和结束位置之间进行插值。

1
如果您有一个非线性插值,您可以使元素看起来开始快速,并在接近目标时减速。 - Sam Holder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接