
- •Цветовые модели для растровой графики: rgb, cmy, yiq, hsv.
- •Ахроматический цвет. Выбор интенсивностей.
- •Дисплейные технологии.
- •Технологии получения твердых копий.
- •Геометрические преобразования в 2d и 3d графике.
- •Плоские проекции трехмерных объектов. Математическое описание и классификация параллельных проекций.
- •Плоские проекции трехмерных объектов. Математическое описание и классификация центральных проекций.
- •Конвейер видовых преобразований в двумерной графике.
- •2D и 3d моделирование в рамках графических систем
- •Методы описания кривых и поверхностей.
- •Основные схемы представления объемных тел. Граничное представление
- •Основные схемы представления объемных тел. Методы конструктивной геометрии.
- •Основные схемы представления объемных тел. Кинематические методы и методы объединения сечений.
- •Основные схемы представления объемных тел. Методы пространственного перечисления. Восьмеричные деревья.
- •Дискретные геометрические модели.
- •Функциональное представление геометрических объектов. Понятие об r-функциях. Теоретико-множественные операции и биективные преобразования.
- •Определение видимости поверхностей. Алгоритм Ньюэлла-Санча, использующий список приоритетов.
- •Определение видимости поверхностей. Алгоритм z-буфера.
- •Простая модель освещение. Рассеянный свет. Диффузное отражение. Зеркальное отражение.
- •Методы закраски полигональных поверхностей. Метод Гуро.
- •Методы текстурирования.
- •Алгоритмы отсечения многоугольников
- •Алгоритмы растровой развертки отрезков
- •Алгоритмы растровой развертки многоугольников
- •Параметрические кривые в форме Эрмита
- •Параметрические кривые в форме Безье
- •Рациональные параметрические кривые
- •Параметрические поверхности в форме Эрмита
Алгоритмы растровой развертки многоугольников
В методах растровой развертки пытаются определить в порядке сканирования строк, лежит ли точка внутри многоугольника или контура. Эти алгоритмы обычно идут от "верха" многоугольника к "низу".
В методах затравочного заполнения предполагается, что известна некоторая точка (затравка) внутри замкнутого контура. В алгоритмах ищут точки, соседние с затравочной и расположенные внутри контура. Если соседняя точка расположена не внутри контура, то значит, обнаружена граница контура. Если же точка расположена внутри контура, то она становится затравочной точкой и поиск продолжается рекурсивно. Подобные алгоритмы применимы только к растровым устройствам.
Многие замкнутые контуры являются простыми многоугольниками. Ели контур состоит из кривых линий, то его можно аппроксимировать подходящим многоугольником или многоугольниками. Простейший метод заполнения многоугольника состоит в проверке на принадлежность внутренности многоугольника каждого пиксела в растре. Этот методслишком расточителен. Затраты можно уменьшить путем вычисления для многоугольника прямоугольной оболочки - наименьшего многоугольника, содержащего внутри себя многоугольник.
Параметрические кривые в форме Эрмита
Форма Эрмита сегмента кубической полиномиальной кривой определяются ограничениями на конечные точки 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.