Ho un triangolo a destra unitario e un valore su ciascuno dei 3 vertici. Ho bisogno di interpolare per trovare il valore in un punto all'interno del triangolo. Ore di ricerca non hanno rilevato nulla che in realtà mi dica come farlo. Ecco il mio tentativo più vicino, che è in realtà abbastanza vicino ma non abbastanza di destra -Interpolazione di un triangolo
result =
v1 * (1 - x) * (1 - y) +
v2 * x * (1 - y) +
v3 * x * y;
v1, v2 e v3 sono i valori ai 3 vertici del triangolo. (x, y) è il punto nel triangolo che stai cercando di trovare il valore di.
Qualsiasi tipo di metodo potrebbe aiutarmi qui. Non deve necessariamente essere un'unità/triangolo rettangolo.
Informazioni aggiornate: Ho una griglia di punti equidistanti e un valore in ogni punto. Faccio un triangolo fuori dai 3 punti più vicini sulla griglia. Ecco un'immagine per illustrarlo -
Quindi devo interpolare tra 5, 3 e 7 per trovare il valore di x. Il punto potrebbe trovarsi anche all'interno dell'altro triangolo, il che significa che interpolate tra 5, 7 e il valore dell'angolo in basso a sinistra del quadrato.
Nel codice ho mostrato, v1 = 5, v2 = 3, v3 = 7.
x è la distanza frazionata (intervallo [0-1]) nella direzione "x", e y è la distanza frazionaria nella direzione "y".
Nell'esempio del quadro, x sarebbe probabilmente circa 0,75 e y sarebbero circa 0,2
Qui sono i miei vicini tentativi -
creata 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;
E un altro tentativo -
Creato utilizzando -
if (x > y)
return
(1 - x) * v1 + (x - y) * v2 + y * v3;
else
return
(1 - y) * v1 + (y - x) * v4 + x * v3;
Sono entrambi vicini a ciò di cui ho bisogno, ma ovviamente non del tutto a posto.
Quindi, quale vertice è che ? Mostrami come funziona il tuo sistema di coordinate, da che parte vanno x and y e dove sono v1 v2 e v3. – Dan
@Dan Ok ho aggiornato alcune informazioni per dire cosa sto facendo un po 'più in profondità. – Frobot
Hai in mente un metodo di interpretazione specifico? Lineare/bilineare/vicino più prossimo? – rsaxvc