У меня есть единичный правый треугольник и значение в каждой из трех вершин. Мне нужно интерполировать, чтобы найти значение в точке внутри треугольника. Часы поиска не показали ничего, что на самом деле говорит мне, как это сделать. Вот моя ближайшая попытка, которая на самом деле довольно близко, но не совсем верно -Интерполяция треугольника
result =
v1 * (1 - x) * (1 - y) +
v2 * x * (1 - y) +
v3 * x * y;
v1, v2, v3 и являются значениями в 3-х вершин треугольника. (x, y) - это точка в треугольнике, которую вы пытаетесь найти значение.
Любой способ поможет мне здесь. Это не обязательно должен быть единичный/правый треугольник.
Обновилась информация: У меня есть сетка равномерно расположенных точек и значение в каждой точке. Я делаю треугольник из ближайших 3 точек на сетке. Вот изображение, чтобы проиллюстрировать это -
Поэтому я должен интерполировать между 5, 3 и 7, чтобы найти значение x. Точка также может быть внутри другого треугольника, то есть вы должны интерполировать между 5, 7 и значением нижнего левого угла квадрата.
В коде я показал, v1 = 5, V2 = 3, v3 = 7.
х дробная расстояние (диапазон [0-1]) в "х" направлении, а у есть дробная расстояние в направлении «y».
В примере на картинке, в х, вероятно, будет около 0,75, а у будет составлять около 0,2
Вот мои близкие попытки -
Создано с помощью -
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;
И еще одна попытка -
Создано с использованием -
if (x > y)
return
(1 - x) * v1 + (x - y) * v2 + y * v3;
else
return
(1 - y) * v1 + (y - x) * v4 + x * v3;
Они оба близки к тому, что мне нужно, но явно не совсем правильно.
Так какая вершина которой ? Покажите мне, как работает ваша система координат, каким образом x и y идут и где v1 v2 и v3. – Dan
@ Dan Ok Я обновил некоторую информацию, чтобы рассказать, что я делаю немного более подробно. – Frobot
У вас есть определенный метод интерпретации? Линейный/билинейный/ближайший сосед? – rsaxvc