Добрый день,
у меня есть кусочнопостоянная или кусочнолинейная 2Д функция заданная на равномерной квадратной сетке.
Внутри области задания этой сетки у меня есть выпуклый четырехугольник, и я хочу быстро вычислять интеграл функции по этому четырехугольнику.
Задача возникла из
https://dxdy.ru/topic150880.html в которой я таки тем же изначальным алгоритмом, что и описывал, подкрутив у него параметры, научился получать сетку, но точность положения узлов получается очень не ахти (+/- пару пикселей). Попытки вызвать функции из OpenCL, которые уточняют сетку не привели к успеху, он просто отказывается работать с такими кривыми картинками. Поэтому мне нужен САБЖ.
Наверное мне хватит, чтобы функция была кусочно-постоянная, но хотелось бы все это в общем случае получить и для кусочно-линейной.
Один важный ньюанс - я хочу использовать значение этого интеграла далее для вычисления частных производных по координатам четырехугольника, возможно применив метод Баура-Штрассена, поэтому тендирую насильно прикрутить гладкость побольше и перейти на кусочно-линейные.
Сам вижу наивный метод. Ищем прямоугольник, в который попадает исходный четырехугольник, и в нем определяем все узлы сетки исходной функции. Далее для каждого узла вычисляем попадает ли он внутрь четырехугольника. Если все четыре узла кусочно-линейной или кусочно-постоянной функции оказались внутри, то считаем полностью этот элемент внутри и суммируем. Если все вне - не учитываем, если что-то есть, что-то нет - то считаем пересечение и считаем этот интеграл.
Но как-то большо крокодилисто получается и, требует довольно много вычислительной работы.
Скажите, пожалуйста, а есть ли какой-то метод по-проще?
Спасибо!