Расчет внутренних значений цвета между известными цветовыми точками (билинейная интерполяция?)
Это кажется довольно элементарным вопросом по математике / графике, но по какой-то причине я не могу обернуться вокруг него.
То, что у меня есть, это четыре линейных сегмента, очерчивающих четырехугольник. Каждая вершина на каждом отрезке имеет известное значение цвета. Для простоты, давайте предположим, что каждый отрезок имеет 100 вершин (или 100 известных цветовых точек). Пример может выглядеть примерно так:
Что мне нужно сделать, это визуализировать сплошной квадрат с каждым цветным внутренним пикселем, основываясь на цветах точек на контуре. Наиболее очевидный способ сделать это (без указания вершины для каждой цветовой точки 100*100) состоит в том, чтобы сначала сгенерировать растровое изображение 100x100 с каждым интерполированным значением цвета, а затем применить это как текстуру к квадру. Мне просто трудно понять, как рассчитать эти внутренние значения цвета.
Кажется, что это будет вопрос билинейной интерполяции, но, поскольку я не пытаюсь найти значения в четырех известных угловых точках, а на пересечении "+" известных цветовых точек, я все время путаюсь. Моя математика немного ржавая:P
В качестве примера, как я мог бы подойти к вычислению значения цвета точки в (50,50) - в середине четырехугольника - с известными цветовыми точками в (0,50), (50,0), (50,100), и (100,50)? Это даже билинейная интерполяция или это что-то совсем другое?
Заранее спасибо!
1 ответ
Это похоже на краевую задачу с условиями Дирихе (то есть значения задаются на границе). Вы не можете решить эту проблему с помощью билинейной интерполяции, потому что обычно получается (если у вас более четырех входных точек), что пиксели, смежные с вашими краевыми пикселями, не будут иметь цвет, непрерывный с их непосредственным соседом.
Главное, что вам нужно решить, это уравнение, которое является достаточно гладким и всегда дает значение цвета, близкое к соседу на границе, и существует несколько вариантов. Очевидной вещью, которую нужно использовать, является уравнение Лапласа, которое в основном похоже на закрепление резинового листа на значении каждого цветового канала на границе и последующее его расслабление. Решение Лапласа не является тривиальным, потому что вам нужно моделировать резиновый лист для каждого нового набора граничных условий, но это очень часто, так что вы можете искать решатели или примеры практически на любом языке.