Estoy buscando un no-lineal de la forma de interpolar entre los 4 valores dentro de un motor de juegos.
Tengo una unidad de square abcd
. Tiene un valor diferente para cada arista ABCD
. Dentro de esa plaza hay algún punto x
. También tengo posición exacta de x
dentro de ese cuadrado en 0..1 intervalo de X y el eje y.
0 --> X
|
V aAAAAAAAb
Y D B
D x B
D B
dCCCCCCCc
Ahora es necesario interpolar entre los valores de ABCD
bordes de una manera, que cerca de la orilla el valor de x
coincide con los bordes de valor, pero más lejos de la orilla que se mezcla con otras aristas de forma proporcional a las distancias.
Por ejemplo:
// Trivial case - mix proportionally
X = 0.1
Y = 0.1
x = A * 0.45 + B * 0.05 + C * 0.05 + D * 0.45; // Sum = 1
// Near edge case - B and D get penalized
X = 0.1
Y = 0.05
x = A * 0.9 + B * 0.025 + C * 0.05 + D * 0.45; // Sum should be = 1, how?
// Edge case
X = 0.1
Y = 0
x = A * 1.0 + B * 0 + C * 0 + D * 0; // Sum = 1
// Degenerate case
X = 0
Y = 0
x = A * 0.5 + B * 0 + C * 0 + D * 0.5; // Sum = 1
¿Qué tipo de interpolación fórmula que podría utilizar para obtener el continuo resultado deseado? Preferiblemente rápido en el cálculo (para ser utilizado en juegos de procesamiento de bucle).
P. S. Este es mi primer post en Matemáticas, así que por favor comentar si hay algún problema con ella.