L'Interpolation d'un triangle

J'ai une unité de triangle droit et une valeur à chacun des 3 sommets.
J'ai besoin d'interpoler pour trouver la valeur en un point à l'intérieur du triangle.
Heures de recherche ont n'ont rien révélé qui effectivement me dit comment faire.
Voici mes plus proches tentative, qui est en fait assez proche mais pas tout à fait à droite -

                result = 
                v1 * (1 - x) * (1 - y) +
                v2 * x * (1 - y) +
                v3 * x * y;

v1, v2 et v3 sont les valeurs à 3 sommets du triangle.
(x, y) est le point dans le triangle que vous essayez de trouver la valeur de.

Tout type de méthode pourrait m'aider ici. Il n'a pas nécessairement besoin d'être une unité/d'un triangle rectangle.

Mise à jour de l'info:
J'ai une grille de points régulièrement espacés et une valeur à chaque point.
Je fais un triangle de la plus proche à 3 points sur la grille.
Voici une photo pour l'illustrer -
L'Interpolation d'un triangle
J'ai donc interpoler entre 5, 3, et 7 pour trouver la valeur de x.
Le point pourrait également être à l'intérieur de l'autre triangle, ce qui signifie que vous serait d'interpolation entre les 5, 7, et la valeur de l'angle inférieur gauche de la place.

Dans le code que j'ai montré, v1 = 5, v2 = 3, v3 = 7.
x est la fraction de la distance (range [0-1]) dans le "x" de la direction, et y est la fraction de la distance dans le "y" de la direction.
Dans l'image de l'exemple, x sera probablement environ 0,75 et y serait d'environ 0,2

Ici sont mes plus proches de tentatives -
L'Interpolation d'un triangle
Créé à l'aide d' -

        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;

Et une autre tentative -
L'Interpolation d'un triangle
Créé à l'aide d' -

if (x > y)
            return
                (1 - x) * v1 + (x - y) * v2 + y * v3;
        else
            return
                (1 - y) * v1 + (y - x) * v4 + x * v3;

Ils sont à la fois proche de ce dont j'ai besoin, mais évidemment pas tout à fait droit.

De sorte que le sommet est qui? Montrez-moi comment votre système de coordonnées œuvres, où x et y aller et où v1, v2 et v3 sont.
Ok j'ai mis à jour quelques informations pour savoir ce que je suis en train de faire un peu plus en profondeur.
Avez-vous une interprétation spécifique de la méthode à l'esprit? Linéaire/linéaire/du voisin le plus proche?
N'triangle fait de l'importance ici? Serait un 4 points d'interpolation?
4 point de la méthode d'interpolation bilinéaire est la façon dont j'ai l'habitude de le faire, mais il est à la recherche comme je l'ai peut grandement améliorer ma vitesse en utilisant les triangles à la place. J'ai l'habitude d'interpoler entre la v1 et la v2 puis v3 et v4, puis d'interpoler entre ces 2 nouvelles valeurs pour la valeur finale. Je voudrais faire quelque chose de similaire, mais avec un triangle.

OriginalL'auteur Frobot | 2012-01-02