2011-03-09 39 views
7

A menudo escucho el término "interpolación lineal" en contexto con animaciones en WPF. ¿Qué significa exactamente "interpolación lineal"? ¿Podría darme un ejemplo donde usar "interpolación lineal"?¿Qué significa "interpolación lineal"?

+3

En cuanto a lo que significa: http://en.wikipedia.org/wiki/Linear_interpolation – stakx

Respuesta

25

Líneas de medios lineales (rectas).

La interpolación es el acto de encontrar un punto dentro de otros dos puntos. Compare esto con la extrapolación, que es encontrar un punto más allá de los extremos de una línea.

Por lo tanto, la interpolación lineal es el uso de una línea recta para encontrar un punto entre otros dos.

Por ejemplo:

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

Puede utilizar los dos puntos finales con interpolación lineal para obtener los puntos a lo largo de la línea:

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

y lineales extrapolación para obtener (por ejemplo):

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

En animación, supongamos que tiene una pelota que rebota y que viaja desde la posición (x,y) de (60,22) a (198,12) en 10 segundos.

Con una tasa de animación de 10 fotogramas por segundo, se puede calcular su posición en cualquier momento con:

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 

Esos dos fórmulas en la parte inferior son ejemplos de interpolación lineal. Al 50% (donde 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 

y (129,17) es el punto medio entre la posiciones inicial y final.

+1

también puede significar lineal en términos de velocidad constante, por lo que la interpolación no cambia la tasa independientemente de dónde se encuentre. –

+3

Nice ASCII art;) –

+0

Me encanta la explicación, sencilla y fácil de entender. – neevek

1

E.g. Cuando desee que un guión gráfico mueva un elemento de una posición a otra con una velocidad fija, entonces utilizará la interpolación lineal entre las posiciones de inicio y fin.

+1

si tuvieras una interpolación no lineal podrías hacer que el elemento parezca comenzar rápido y la velocidad a medida que se aproxima a su destino –