Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОТветы на зачет.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.52 Mб
Скачать

Алгоритмы растровой развертки многоугольников

В методах растровой развертки пытаются определить в порядке сканирования строк, лежит ли точка внутри многоугольника или контура. Эти алгоритмы обычно идут от "верха" многоугольника к "низу".

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

Многие замкнутые контуры являются простыми многоугольниками. Ели контур состоит из кривых линий, то его можно аппроксимировать подходящим многоугольником или многоугольниками. Простейший метод заполнения многоугольника состоит в проверке на принадлежность внутренности многоугольника каждого пиксела в растре. Этот методслишком расточителен. Затраты можно уменьшить путем вычисления для многоугольника прямоугольной оболочки - наименьшего многоугольника, содержащего внутри себя многоугольник.

Параметрические кривые в форме Эрмита

Форма Эрмита сегмента кубической полиномиальной кривой определяются ограничениями на конечные точки P1 и P4, и касательные векторы в конечных точках R1 и R4 (нумерация для согласованности с последующими формами).

Тогда геометрический вектор Эрмита:

G = [ P1 P4 R1 R4 ].

Базисная матрица Эрмита:

Mh = [ 2 -3 0 1 ]

[ -2 3 0 0 ]

[ 1 -2 1 0 ]

[ 1 -1 0 0 ].

Если Bh - функции сопряжения, то искомый полином:

Q(t) = Gh Mh T = Gh Bh =

(2*t^3-3*t^2+1) P1 + (-2*t^3+3*t^2) P4 + (t^3-2*t^2+t) R1 + (t^3-t^2) R4

Т.е. полином представляется в виде линейной комбинации векторов-ограничений.

Параметрические кривые в форме Безье

Ограничения для формы Безье для сегмента кубического сплайна определяются, помимо двух конечных точек P1 и P4, заданием еще двух "промежуточных" точек P3 и P4 вне кривой, которые неявно определяют касательные векторы P1P2 и P2P4

При этом геометрический вектор Безье: Gb = [ P1 P2 P3 P4 ],

базисная матрица Безье:

Mb = [ -1 3 -3 1 ]

[ 3 -6 3 0 ]

[ -3 3 0 0 ]

[ 1 0 0 0 ].

Тогда параметрический полином для сегмента:

Q(t) = Gb Mb T = Gb Bb =

(1-t)^3 P1 + 3*t*(1-t)^2 P2 + 3*t^2*(1-t) P3 + t^3 P4.

Четыре сопрягающих полинома Bb = Mb T , которые являются в этом уравнении весовыми коэффициентами, называются полиномами Бернстейна

Геометрическая непрерывность G1 обеспечивается, когда:

P3 - P4 = k (P4 - P5).

То есть, три точки P3, P4, P5 должны быть различны и коллинеарны. В более ограничительном случае, когда k=1, появляется и C1 непрерывность.

Рациональные параметрические кривые

B-сплайн, состоят из сегментов, чьи полиномиальные коэффициенты зависят лишь от нескольких контрольных точек. Т.е. B-сплайны подвержены локальному контролю - движение одной точки отражается только на малом участке кривой.

Кубический B-сплайн аппроксимирует последовательность из m+1 контрольной точки P0, P1,..., Pm, m>=3; с помощью кривой, состоящей из m-2 кубических полиномиальных сегментов (в сущности - в форме Безье) Q3, Q4,..., Qm. Считаем домены параметра t для каждого сегмента последовательными. Т.е. сегмент Qi определен в интервале ti <=t<ti+1 для 3<=i<m. В частном случае m=3 имеем всего один сегмент на интервале t3<=t<t4 определяемый контрольными точками P0, P1, P2, P3.

Для каждого I>=4 существует соединительная точка или узел между Qi-1 и Qi при величине параметра ti; величина параметра в узле называется величиной узла.Начальная и конечная точки в t3 и в tm+1 также называются узлами, поэтому всего имеется m-1 узлов.

Термин однородный (uniform) означает, что узлы располагаются в равных интервалах параметра t. Без потери общности можно предположить, что t3=0 и ti+1 - ti = 1.

Каждый из m-2 сегментов кривой определяется четырьмя из m+1 контрольных точек:

для Qi: Pi-3, Pi-2, Pi-1, Pi.

Значит, геометрическая матрица для этого сегмента:

Gbsi = [ Pi-3 Pi-2 Pi-1 Pi ], 3<=i<m

Можно видеть, что сегмент Qi начинается где-то вблизи точки Pi-2 и заканчивается где-то около Pi-1. Каждая контрольная точка (кроме первых и последних) влияет на 4 сегмента.

Базисная матрица для -сплайна, связывающая геометрические ограничения Gbs с функциями сопряжения Bbs и полиномиальными коэффициентами:

Mbs = 1/6 * [ -1 3 -3 1 ]

[ 3 -6 3 0 ]

[ -3 0 3 0 ]

[ 1 4 1 0 ]

Заменяя для простоты (t-ti) на t, а интервал [ ti, ti+1 ] на [ 0, 1 ], получим:

Qi(t-ti) = Gbsi MbsiTi = Gbsi Mbs T =

= Gbsi Bbs = Pi-3 Bbs-3 + Pi-2 Bbs-2 + Pi-1 Bbs-1 + Pi Bbs0 =

= (((1-t)^3)/6) Pi-3 + ((3*t^3-6*t^2+4)/6) Pi-2 + ((-3*t^3+3*t^2+3*t+1)/6) Pi-1 + ((t^3)/6) Pi,

Можно трактовать кривую, как существующую в пространстве однородных координат:

Q(t) = [ X(t) Y(t) Z(t) W(t) ]T

Переходя в трехмерное пространство:

x(t) = X(t)/W(t), y(t) = Y(t)/W(t), z(t) = Z(t)/W(t),

где X(t), Y(t), Z(t), W(t) - кубические полиномиальные кривые. Когда все они B-сплайны, то их называют NURBS.