- •Виды компьютерной графики.
- •Растровая графика.
- •Векторная графика.
- •2.Способы описания цвета. Цветовые модели.
- •2.1 Основные характеристики цвета.
- •2.2 Старт с xyz
- •Классификация устройств вывода
- •Разрешение устройств
- •Матричный принтер
- •Струйная печать
- •Л азерный принтер
- •П ринтеры на твердых красителях
- •Графопостроители
- •Электронно-лучевые трубки
- •Основные понятия gks
- •Кадрирование и отсечение.
- •Афинные преобразования
- •Фильтрация изображения
- •Сжатие.
- •Алгоритм Брезенхема для генерации окружностей
- •Заполнение областей
- •Представление кривых линий
- •Задание объектов и сцен
- •Рисование одноцветного треугольника
- •Алгоритм художника
- •Порталы
- •Отсечение при растеризации
- •Алгоритм Сазерленда-Ходжмана
- •Аффинное
- •Перспективно-корректное
- •Мипмэппинг
- •Параболическое
- •Билинейная фильтрация текстур
- •Модель освещения
- •2. Расчет нормали к объекту
- •3. Освещение по Ламберту
- •Освещение по Гуро
- •Освещение по Фонгу
Представление кривых линий
Параметризация кривых. При геометрическом моделировании фигуры идентичные кривым в пространстве, являются конечными отрезками этих кривых. Рассматриваемое множество точек кривой является отрывом непрерывного кусочка - обратимого отображения замкнутого отрезка числовой прямой. Отображаемый отрезок называется областью изменений параметра, а само изменение - параметризацией. Одна и та же кривая может быть параметризована бесчисленным множеством способов. Параметризация осуществляется заданием декартовых координат текущей точки кривой как функции некоторого параметра:
x=x(t), y=y(t), z=z(t), n<t<b.
Конкретный вид этих функций отличает данную параметризацию от всех точек.
Например , - явные задания кривой. Положив x=t, получим один из возможных видов параметризации. Если разрешить уравнение относительно y и положить y=t ,
, то это будет другая (неоднозначная) параметризация.
Будем пользоваться параметрическими уравнениями 3Д-кривой в векторной форме r(t)=x(t)e1+ y(t)e2 + z(t)e1 где
x
r(t)= y - радиус-вектор текущей точки на кривой,
z
e1, e2, e1 - орты координатных осей.
Кривая называется m раз непрерывно дифференцируемой, если она допускает m раз непрерывно дифференцируемую параметризацию. Непрерывно дифференцируемые кривые (m=1), допускающие параметризацию, первая производная которой по модулю всегда отлична от нуля , (r 0) называются гладкими. Если при r(t)= 0, то точка может быть особой.
Далее мы будем рассматривать гладкие кривые, обладающие кусочно-непрерывной ограниченной кривизной, т.е. допускающими такую параметризацию, r = r(t) , что вторая производная кусочно-непрерывна и ограничена.
Дискретно-точечным заданием кривой будем называть конечную совокупность точек кривой, упорядоченных по ее длине. В некоторых случаях могут быть заданы дополнительные сведения о свойствах кривой в окрестности соответствующей точки. Кроме заданных точек и дополнительных условий требуется наличие некоторого алгоритма интерполирования. Обычно используется интерполяция в трехмерном пространстве.
Рассмотрим представление кривых с помощью кубических параметризованных кривых
или в матричном виде
x(t)
y(t) = 0< t <1
z(t) t
1
или r(t) = G T,
где
T = ,
t
1
G = =
где = [], = [],
= []- векторы столбцы.
В зависимости от вида матрицы G получают различные формы описания параметризованных кривых.
Обсудим вопрос, почему рассматриваются именно кубические кривые. Дело в том, что не существует кривых более низкого порядка, которые обеспечивали бы в точке соединения кривых друг с другом непрерывность положения наклоны сегментов и в то же время гарантировало бы, что концевые точки сегмента кривой проходит через заданные точки.
Говорят, что кривая принадлежит к классу , если все производные функции порядков от 0(сама кривая) до n. Кубические кривые принадлежат к классу . Кривые более высокого порядка сложнее, кроме того, в ряде случаев дают неопределенную волнистость.
Рассмотрим три способа описания параметрических кривых, наиболее распространенные в практике геометрического моделирования.
Форма Эрмита. Кривая задана координатами начальной и конечной точки, а также величиной производных в этих точках. Точки обозначим:
= , = ,
а векторы
= , = .
Через эту кривую нужно провести параметризованную кривую третьего порядка с заданными на концах производными. При этом в параметр t= 0, в параметр t=1.
t=1
t= 0
Рассмотрим сперва координату x :
x(0)= , x(1)= , x(0)= , x(1)= .
Запишем первую строку из матричного соотношения (*)
x(t)= X = ;
3t2
x(t)= TTAx = 2t Ax ;
1
0
При t= 0 x(0)= x1= [0 0 0 1] Ax ; x(0) = qx1 = [0 0 1 0] Ax ;
При t= 1 x(1)= x2= [ 1 1 1 1] Ax ; x(1) = qx2 = [3 2 1 0] Ax ;
сведем написанные четыре уравнения в систему :
x(0) 0 0 0 1 x1
x(1) = 1 1 1 1 Ax = x2
x(0) 0 0 1 0 qx1
x(1) 3 2 1 0 qx2
Mh-1 Ax
Обращая матрицу Mh-1, получим искомый вектор Ax
x1
Ax = Mh x2 = Mh Ghx .
qx1
qx2
Проводя вычисления, получим
2 -2 1 1
Mh = -3 3 -2 -1
0 0 1 0
1 0 0 0
Mh называется эрмитовой матрицей; Ghx называется геометрическим вектором Эрмита. Аналогично можно вычислить Ay , Az : Ay = Mh Ghy ; Az = Mh Ghz . Вернемся к координатам
x(t)= TT Ax = TT Mh Ghx ;
y(t)= TT Ay = TT Mh Ghy ;
z(t)= TT Az = TT Mh Ghz ;
или rT(t) = TT Mh Gh , где Gh - геометрическая матрица Эрмита.
x1 y1 z1 r1T
Gh = [ Ghx Ghy Ghz ] = x2 y2 z2 = r2T
x1 y1 z1 q1T
x2 y2 z2 q2T
Рассмотрим произведение TT Mh = h(t)
2 -2 1 1
h(t) = T Mh = [ t3 t2 t 1 ] -3 3 -2 -1 =
0 0 1 0
1 0 0 0
= [ 2t3 - 3t2 + 1; -2t3 + 3t2; t3 - 2t2 + t; t3 - t2 ].
Тогда окончательно rT(t) = h(t) Gh .
Четыре функции переменной t, входящие в вектор Фh называется функциями сопровождения. Первые две из них сопрягают точки r1 и r2 , а посредством двух других сопрягаются векторы производных r1 и r2. В результате получается сопряженное объединение r(t) .
В качестве примера рассмотрим семейство кривых Эрмита, проходящие через две точки P1 и P2 , у которых r имеет различную величину, а arg r одинаков.
64
Q1 32
16
8
P1 P2
r Q2
Отметим, что длина касательной - это явление, возникающее из-за параметрической формы представления.
Форма Безье (Busier) - эта форма кубической кривой близка к эрмитовой форме, однако отличается от нее заданием касательных векторов в конечных точках. В форме Безье используется четыре точки.
Q1Г3
P
1
Г1 Г2
P2
Г4 Q4
Касательные вектора в конечных точках задаются отрезками P1Q1 и P2Q2 . В частности, касательные вектора r1 и r2 эрмитовой формы определяются так, чтобы соответствовать четырём точкам Безье: P1Q1 и P2Q2 .
r1 = 3( rQ1 - rP1) = r(0) = 3(Г3 - Г1) ;
r2 = 3( rQ2 - rP2) = r(1) = 3(Г2 - Г4) .
Следовательно, матрица перехода от эрмитовой формы к форме Безье имеет вид
r1 1 0 0 0 Г1
Gh = r2 = 0 1 0 0 Г2 = Mhb Gb ,
r1 -3 0 3 0 Г3
r2 0 3 0 -3 Г4
где Mhb - переходная матрица.
Отсюда r(t) = TT Mh Gh = TT Mh Mhb Gb = TT Mb Gb ,
где Mb - матрица Безье .
2 -2 1 1
1 0 0 0 -1 1 3 -3
Mb = -3 3 -2 -1 0 1 0 0 = 3 0 -6 3
0 0 1 0 -3 0 3 0 -3 0 3 0
1 0 0 0 0 3 0 -3 1 0 0 0
Вычислив произведение b = TT Mb
b = [ t3 t2 t 1] Mb = [ -t3 + 3t2 - 3t + 1; t3 ; 3t3 -6t2 + 3t; -3t3 + 3t2 ] =
= [ (1-t)3 ; t3 ; 3t(t-1)2 ; 3t2(t-1)] .
r(t) = b Gb = r1(1-t)3 + r2t3 + r33t(t-1)2 + r43t2(t-1).
Обратим внимание, что каждый из коэффициентов при векторах изменяется в диапазоне 0...1, а сумма коэффициентов вида равна 1. Это выражение оценивает взвешенное среднее для четырех управляющих точек.
При t = 0 r(0) = Г1
t = 1 r(1) = Г2
При стыковке нескольких отрезков должно выполняться условие
Q2P2 = kP2Q3 , т.е. производные должны соблюдать по направлению. Форма Безье используется в машинной графике чаще, чем эрмитова форма:
1) геометрически матрицу удобнее задавать в диалоговом режиме, удобнее задавать четырьмя точками, чем указывать производную в явном виде, как это требуется при использовании эрмитовых форм.
2) четыре управляющих точки определяют выпуклый четырехугольник , натянутый на эти точки и содержащий внутри себя кривую. Эта оболочка оказывается полезной при отсечении кривой по окну и видимому объему.
