Tengo una unidad de triángulo rectángulo y un valor en cada uno de los 3 vértices. Necesito interpolar para encontrar el valor en un punto dentro del triángulo. Las horas de búsqueda no han revelado nada que realmente me diga cómo hacer esto. Aquí está mi intento más cercano, que es en realidad muy cerca, pero no del todo bien -Interpolación de un triángulo
result =
v1 * (1 - x) * (1 - y) +
v2 * x * (1 - y) +
v3 * x * y;
v1, v2 y v3 son los valores en los 3 vértices del triángulo. (x, y) es el punto en el triángulo que está tratando de encontrar el valor de.
Cualquier tipo de método me ayudaría aquí. No necesariamente tiene que ser un triángulo unidad/derecha.
Información actualizada: Tengo una grilla de puntos espaciados uniformemente y un valor en cada punto. Formo un triángulo con los 3 puntos más cercanos en la cuadrícula. Aquí está una imagen para ilustrarlo -
Así que tengo que interpolar entre 5, 3 y 7 para encontrar el valor de x. El punto también podría estar dentro del otro triángulo, lo que significa que se interpolaría entre 5, 7 y el valor de la esquina inferior izquierda del cuadrado.
En el código mostré, v1 = 5, v2 = 3, v3 = 7.
x es la distancia fraccional (rango [0-1]) en la dirección "x", y Y es la distancia fraccional en la dirección "y"
En el ejemplo de la imagen, x probablemente sería aproximadamente 0,75 e y sería de alrededor de 0,2
Aquí están mis intentos más cercanos -
creado usando -
if (x > y) //if x > y then the point is in the upper right triangle
return
v1 * (1 - x) * (1 - y) +
v2 * x * (1 - y) +
v3 * x * y;
else //bottom left triangle
return
v1 * (1 - x) * (1 - y) +
v4 * (1 - x) * y +
v3 * x * y;
Y otro intento -
Creado mediante -
if (x > y)
return
(1 - x) * v1 + (x - y) * v2 + y * v3;
else
return
(1 - y) * v1 + (y - x) * v4 + x * v3;
Ambos están cerca de lo que necesito, pero obviamente no del todo bien.
Así qué vértice es el que ? Muéstrame cómo funciona tu sistema de coordenadas, de qué manera van xy y dónde están v1 v2 y v3. – Dan
@Dan Ok Actualicé algo de información para contar más detalladamente lo que estoy haciendo. – Frobot
¿Tiene un método de interpretación específico en mente? ¿Linear/bilineal/vecino más cercano? – rsaxvc