Войти
ПрограммированиеФорумГрафика

Интерполяция

#0
15:01, 12 июля 2012

Добрый день!

Суть задачи.
Изображение

Есть внешний прямоугольник. Внутри него есть еще один прямоугольник(внутренний). Вершинам прямоугольников заданы какие-то значения(от 0 до 1). Допустим, значения альфы.
Значения вершин внешнего прямоугольника лежат в диапазоне от 0 до 1. Внутреннего - всегда равны 1.
Внутренний прямоугольник может быть любых размеров(но не выходить на пределы внешнего) и находиться в любом месте внешнего, некоторые грани могут совпадать.

Необходимо для произвольной точки ВНУТРИ внешнего прямоугольника и ВНЕ внутреннего определить интерполированное значение(на рисунке это может быть любая точка между в области между синим и голубым прямоугольниками). Желательно - максимально просто и чтобы быстро работало.

Идея 1. Определяем к какой части относится точка(сверху, снизу, слева или справа внутреннего прямоугольника). Проводим линии к этой точке от соответствующих вершин(или опускаем перпендикуляры). На основе расстояния(чем меньше расстояние, тем больше влияет) определяем значение(точка А на рисунке). А что если точка находится на границе разных частей(точка В), к какой части относить точку? Да и плавности здесь, мне кажется, не будет.
Изображение

Идея 2. Триангуляция. Берем ближайшие 3 точки, при чем такие, чтобы точка оказалась в треугольнике, который они образуют. В действенности данного способа не уверен, и в реализации будет сложноват.


#1
15:17, 12 июля 2012

Смотри билинейную фильтрацию интерполяцию. На вики хорошо написано.

#2
15:25, 12 июля 2012

Посчитать расстояние до 4-х точек, поделить значения точек на эти расстояния, нормализовать. Полученное число умножить на твою альфу.
Всё будет плавно, а если во фрагментном шейдере, то плавнее некуда.

#3
15:45, 12 июля 2012

Цвет точки - сумма цветов всех восьми вершин, умноженных на R, где R = 1/расстояние до вершины, делённая на сумму всех восьми R. Вот прототип на бейсике: Интерполяция.

#4
18:14, 12 июля 2012

В первую очередь надо заменить прямоугольник на четыре трапеции. По бокам трапеции всё уже линейно и неразрывно. Через любую точку внутри трапеции строится параллельная основаниям прямая и находятся точки пересечения со сторонами. Дальше находится значение уже линейной интерполяцией по крайним точкам. Формулы писать надо или и так понятно?

#5
19:40, 12 июля 2012

Наркоманы %)

#6
19:46, 12 июля 2012

барицентрические координаты

ПрограммированиеФорумГрафика

Тема в архиве.