【发布时间】:2011-03-11 07:26:32
【问题描述】:
我经常在 WPF 中的动画上下文中听到“线性插值”一词。 “线性插值”到底是什么意思?你能举个例子在哪里使用“线性插值”吗?
【问题讨论】:
标签: wpf
我经常在 WPF 中的动画上下文中听到“线性插值”一词。 “线性插值”到底是什么意思?你能举个例子在哪里使用“线性插值”吗?
【问题讨论】:
标签: wpf
线性表示直线(直线)。
插值是在其他两个点内找到一个点的行为。将此与外推法进行对比,外推法是在直线末端之外找到一个点。
所以线性插值是使用直线来找到其他两个点之间的点。
例如:
*(5,10)
/
/
/
/
*(0,0)
您可以使用两个端点进行线性插值来获得沿线的点:
(1,2)
(2,4)
(3,6)
(4,8)
和线性外推得到(例如):
(1000,2000)
(-1e27,-2e27)
在动画中,假设您有一个弹跳球,它在10 秒内从(60,22) 的(x,y) 位置移动到(198,12)。
以每秒 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) 是起点和终点之间的中点。
【讨论】:
例如当您希望情节提要使用固定速度将元素从一个位置移动到另一个位置时,您将在开始位置和结束位置之间使用线性插值。
【讨论】: