"线性插值"是什么意思?

Sys*_*ata 7 wpf

我常常在WPF中使用动画的上下文中听到"线性插值"一词."线性插值"究竟是什么意思?你能举个例子来说明使用"线性插值"吗?

pax*_*blo 25

线性意味着线(直线).

插值是两个其他点找到一个点的行为.将此与外推法进行对比,外推法是在一条线的末端之外找到一个点.

因此,线性插值是使用直线来找到两个其他点之间的点.

例如:

     *(5,10)
    /
   /
  /
 /
*(0,0)
Run Code Online (Sandbox Code Playgroud)

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

(1,2)
(2,4)
(3,6)
(4,8)
Run Code Online (Sandbox Code Playgroud)

和线性外推得到(例如):

(1000,2000)
(-1e27,-2e27)
Run Code Online (Sandbox Code Playgroud)

在动画,让我们说你有一个反弹球从行进(x,y)的位置(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
Run Code Online (Sandbox Code Playgroud)

底部的这两个公式是线性插值的示例.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
Run Code Online (Sandbox Code Playgroud)

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

  • 好的ASCII艺术;) (3认同)