2011-03-09 79 views
7

我經常在WPF中的動畫中聽到術語「線性插值」。 「線性插值」究竟意味着什麼?你能給我一個例子,在哪裏使用「線性插值」?「線性插值」是什麼意思?

+3

至於它是什麼意思:http://en.wikipedia.org/wiki/Linear_interpolation – stakx 2011-03-09 17:07:10

回答

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

它也可能意味着恆定速率的線性,所以插值不會改變速率,無論你在哪裏。 – 2011-03-09 17:12:34

+3

漂亮的ASCII藝術;) – 2011-03-09 17:17:46

+0

我喜歡這個解釋,簡單易懂。 – neevek 2012-09-10 04:44:55

1

E.g.當你想要一個故事板以一個固定的速度將一個元素從一個位置移動到另一個位置時,你可以在開始位置和結束位置之間使用線性插值。

+1

如果你有一個非線性插值,你可以使元素看起來開始快速並且隨着它接近其目的地而減速 – 2011-03-09 17:14:58