我常常在WPF中使用动画的上下文中听到“线性插值”这个术语。 “线性插值”究竟是什么意思?你能举个例子说明使用“线性插值”吗?
答案 0 :(得分:25)
线性意味着线(直线)。
插值是在其他两个点内找到点的行为。将此与外推法进行对比,外推法是在一条线的末端之外找到一个点。
因此,线性插值是使用直线来找到两个其他点之间的点。
例如:
*(5,10)
/
/
/
/
*(0,0)
您可以使用线性插值的两个端点来获取沿线的点:
(1,2)
(2,4)
(3,6)
(4,8)
和线性外推得到(例如):
(1000,2000)
(-1e27,-2e27)
在动画中,假设你有一个弹跳球,在(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
底部的这两个公式是线性插值的例子。 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 :(得分:1)
E.g。当您希望故事板使用固定速度将元素从一个位置移动到另一个位置时,您将在开始和结束位置之间使用线性插值。