Содержание
§ 6. Интерполяция на нерегулярной сетке
Интерполяция в барицентрических координатах
Барицентрическими координатами называется тройка чисел , которые соответствуют массам, расположенных в вершинах треугольника. Если сумма этих координат равна единице, то они называются однородными и однозначно определяют координаты точки внутри треугольника:
Здесь — это декартовы координаты вершин треугольника. Барицентрические координаты вершин треугольника равны , , соответственно. Из-за того что сумма однородных барицентрических координат равна единице, третья координата всегда зависит от остальных.
Для того чтобы вычислить значение функции в любой точке внутри треугольника по известным значениям этой функции в вершинах треугольника, используется формула
Для вычисления барицентрических координат точки по декартовым координатам вершин используется система уравнений
решение которой записывается как
Барицентрические координаты обобщаются на тетраэдры путем добавления координаты и коорданты в вышеописанные уравнения. После этого координаты однозначно описывают положение точки внутри тетраэдра.
Интерполяцию в барицентрических координатах можно считать обобщением линейной интерполяции на нерегулярные треугольные сетки. Этот метод широко применяется в задачах, где используются трехмерные модели объектов, которые чаще всего описываются именно такими сетками.
Интерполяция методом ближайших соседей
Для нерегулярных сеток (облаков точек) применяют методы, основанные на поиске ближайших соседних точек и вычислении на их основе взвешенного среднего значения функции в заданной точке.
В качестве весовой функции используют обратное расстояние:
Интерполяция радиально-базисными функциями
В данном методе функция интерполируется с помощью взвешенной суммы радиально-базисных функций.
Радиально-базисной функцией называется функция, которая зависит от расстояния от точки до какой-либо фиксированной точки. В данном методе в качестве фиксированных точек выбираются ближайших соседей. Веса определяются из системы уравнений
Как правило, количество ближайших соседей фиксировано и невелико, а это значит, что для системы можно получить решение в явном виде.
В качестве радиально-базисной функции в зависимости от задачи выбирают
- функцию Баттерворта ;
- функцию Гаусса ;
- другие аналогичные функции.
Задания
Барицентрические координаты1 балл
Перед вами поверхность, заданная дискретно массивом точек. Напишите программу, которая вычисляет координату поверхности в любой точке внутри поверхности с помощью барицентрической интерполяции. Для этого разделите поверхность на прямоугольные области (сетку), а каждый прямоугольник на два треугольника. Затем используйте один из треугольников для интерполяции. Проверить себя можно с помощью программы Gnuplot.
splot 'surface.xyz' # нарисовать поверхность splot 'surface.xyz', 'mypoints.xyz' # нарисовать поверхность + интерполированные точки
Радиально-базисные функции2 балла
Выполните первое задание, используя интерполяцию радиально-базисными функциями по четырем точкам, которые обрамляют прямоугольник, в который попала интерполируемая точка. Веса можно вычислить как численно, так и аналитически (с помощью Mathics). В качестве радиально-базисной функции можно использовать любую подходящую функцию.
Точки пересечения сложных фигур (3D)3 балла
Найдите точки пересечения треугольника и поверхности в трехмерном пространстве. Треугольник может иметь любую ориентацию в пространстве, а под поверхностью должна быть одна или две вершины (но не три). Вычислите координаты точек пересечения с помощью метода бисекции, интерполируя точки на поверхности с помощью барицентрических координат или радиально-базисных функций.