-
Notifications
You must be signed in to change notification settings - Fork 0
Sustancias. Interpolación lineal (Idea desechada definitivamente, al menos de momento ;P )
(ver issue 'substance resolution')
Vale, "pixelamos" la temperatura. Pero se nos queda una función escalonada, con saltos bruscos de un escalón a otro. Hay una manera (con un incremento ínfimo del tiempo de computación) de conseguir que la temperatura sea una función continua:
El valor en cada punto depende proporcionalmente del valor de la función en cada uno de los 4 puntos de la cuadrícula en la que está. No sé si me explico.
Por ejemplo:
Supongamos que el biotopo tiene tamaño 100x100. Supongamos que lo hemos dividido en zonas de tamaño 5x5 y hemos almacenado un valor de temperatura para cada uno DE LOS VÉRTICES de esa cuadrícula (es el mismo número de datos que si esa temperatura suponemos que está en el centro de cada cuadrado 5x5).
Es decir, que sabemos la temperatura exacta de aquellos puntos del biotopo cuyas coordenadas son múltiplos de 5. Veamos cómo calculamos la temperatura de cualquier otro punto del biotopo, por ejemplo el punto (27, 44)
Sea (x, y) = (27 % 5, 44 % 5) = (2, 4)
Sea A = (27, 44) - (x, y) = (25, 40)
Es decir, que el punto A se calcula redondeando (27, 44) hacia abajo a múltiplos de 5
Sabemos los valores exactos de temperatura en los 4 vértices del cuadrado que contiene a (27, 44):
T(25, 40) = temperatura en el punto (25, 40)
T(25, 40 + 5) = T(25, 45)
T(25 + 5, 40) = T(30, 40)
T(25 + 5, 40 + 5) = T(30, 45)
Estimamos ahora la temperatura en (27, 44) haciendo una interpolación a partir de esos cuatro valores:
T(27, 44) = ( (5 - x) * (5 - y) * T(25, 40) + x * (5 - y) * T(25 + 5, 40) + (5 - x) * y * T(25, 40 + 5) + x * y * T(25 + 5, 40 + 5) ) / (5^2)
Recuerda que x = 27 % 5 = 2 y que y = 44 % 5 = 4
Podemos aplicar esa fórmula a cualquier punto del biotopo, incluso aunque tenga coordenadas reales (no enteras).
Las sustancias de grado 0 son las funciones escalonadas (interpolación de grado 0) y las de grado 1 son aquellas en las que interpolamos con polinomios que son de grado 1 en x y de grado 1 en y