Интерполяция значений точек на поверхности, созданной выпуклой оболочкой

#matlab #interpolation #convex-hull

#matlab #интерполяция #выпуклая оболочка

Вопрос:

У меня есть несколько 3D-точек, таких как [x, y, z], и их значения, такие как [Bx, By, Bz] . Выпуклая оболочка этих точек генерируется convhull или convexHull

выпуклая оболочка

Теперь я хочу интерполировать значения вершин треугольника для N новых точек на выпуклой оболочке. Каковы возможные методы для этого?

Комментарии:

1. Что значит интерполировать значения вершин треугольника? Сложной оболочки?

2. да, каждая вершинная точка имеет значение. Они должны быть интерполированы для новых точек на сгенерированной выпуклой оболочке.

3. Правильно. Поэтому, если вы используете convhull , например, он возвращает триангуляцию. Вам просто нужно знать, как получить значения в трехмерном треугольнике, что довольно просто (подсказка: это просто значения на поверхности, ограниченной некоторыми ограничениями)

4. Где размещаются новые точки? Внутри, снаружи или на поверхности выпуклой оболочки? Какой метод интерполяции вы хотите использовать? Должен ли метод интерполяции использовать только 3 вершины, 4 вершины или все вершины выпуклой оболочки?

5. Новая точка должна находиться на поверхности выпуклой оболочки. Интерполяция должна применяться для каждого треугольника (3 вершины каждого треугольника выпуклой оболочки).

Ответ №1:

Предположим, что данная точка является p=(x,y,z) , и вы обнаружили, что она расположена в треугольнике p1=(x1, y1, z1) , p2=(x2, y2, z2) , и p3=(x3, y3, z3) (на выпуклой оболочке). Теперь, если я правильно понимаю, мы хотим вычислить три неотрицательных вещественных a значения , b , и c , такие, что a * p1 b * p2 c * p3 = p и a b c = 1 (линейная комбинация вершин треугольника). Это может быть определено матрицей, подобной M = [p1;p2;p3] уравнению, подобному [a b c] * M = p . Следовательно, [a b c] = p * inv(M) . Вы можете сделать это для всех других точек.

Обратите внимание, что если p не находится внутри треугольника, решаемая [a b c] не будет удовлетворять неотрицательности или a b c = 1 .