
- •Цветовые модели для растровой графики: rgb, cmy, yiq, hsv.
- •Ахроматический цвет. Выбор интенсивностей.
- •Дисплейные технологии.
- •Технологии получения твердых копий.
- •Геометрические преобразования в 2d и 3d графике.
- •Плоские проекции трехмерных объектов. Математическое описание и классификация параллельных проекций.
- •Плоские проекции трехмерных объектов. Математическое описание и классификация центральных проекций.
- •Конвейер видовых преобразований в двумерной графике.
- •2D и 3d моделирование в рамках графических систем
- •Методы описания кривых и поверхностей.
- •Основные схемы представления объемных тел. Граничное представление
- •Основные схемы представления объемных тел. Методы конструктивной геометрии.
- •Основные схемы представления объемных тел. Кинематические методы и методы объединения сечений.
- •Основные схемы представления объемных тел. Методы пространственного перечисления. Восьмеричные деревья.
- •Дискретные геометрические модели.
- •Функциональное представление геометрических объектов. Понятие об r-функциях. Теоретико-множественные операции и биективные преобразования.
- •Определение видимости поверхностей. Алгоритм Ньюэлла-Санча, использующий список приоритетов.
- •Определение видимости поверхностей. Алгоритм z-буфера.
- •Простая модель освещение. Рассеянный свет. Диффузное отражение. Зеркальное отражение.
- •Методы закраски полигональных поверхностей. Метод Гуро.
- •Методы текстурирования.
- •Алгоритмы отсечения многоугольников
- •Алгоритмы растровой развертки отрезков
- •Алгоритмы растровой развертки многоугольников
- •Параметрические кривые в форме Эрмита
- •Параметрические кривые в форме Безье
- •Рациональные параметрические кривые
- •Параметрические поверхности в форме Эрмита
Параметрические поверхности в форме Эрмита
Поверхности получаются как обощение параметрических кубических кривых. Для кривой имеем:
Q(t) = G M T.
Заменяя для удобства обозначений t на s:
Q(s) = G M S.
Если теперь допустить, что точки в геометрической матрице G могут меняться в 3D вдоль некоторой кривой же, которая параметризована по t:
Q(s, t) = [ G1(t) G2(t) G3(t) G4(t) ] M S
Для каждого фиксированного t’ из интервала [ 0 1 ] имеем кривую Q(s, t’) - т.к. G(t’) - константа. Таким образом, получаем на интервале изменения t семейство кривых, которые, будучи близко расположены друг к другу, и определяют искомую поверхность. Если Gi(t) - сами кубические кривые, то и поверхность называется параметрической бикубической кривой.
Итак, кривая Gi(t) имеет свою геометрическую матрицу Gs = [ gsi1 gsi2 gsi3 gsi4 ]. Тогда:
Gi(t) = Gsi M T.
Известно равенство: ( A B C )T = CT BT AT.
Тогда транспонируя:
Gi(t) = TT MT GsiT = TT MT [ gsi1 gsi2 gsi3 gsi4 ]T.
Подставляя:
Q(s, t) = TT MT [ gs11 gs21 gs31 gs41 ] M S
gs12 gs22 gs32 gs42 ]
gs13 gs23 gs33 gs43 ]
[ gs14 gs24 gs34 gs44 ] или
Q(s, t) = TT MT Gs M S, 0 <= s, t, <= 1.
Используя эту общую форму, можно вывести конкретные матрицы для поверхностей Эрмита, Безье и сплайнового типа.
Уравнения прямой и плоскости
Основное уравнение плоскости:
Ах + Ву +Сz + D=0,
где А, В, С, D – постоянные, причем А, В, С одновременно не равны нулю.
Уравнение плоскости в векторной форме:
(r, N) +D =0,
где r – радиус вектор точки M(x,y,z) – принадлежащей плоскости, вектор N =(A,B,C) перпендикулярен плоскости(нормальный вектор)
Уравнение плоскости в отрезках(отсекаемых плоскостью на осях Ox, Оy, Оz)
x/a + y/b + z/c =1
Уравнение прямой в векторной форме:
r = r0 + a*t,
где r0(x0,y0,z0) – точка через которую проходит прямая,
a(l,m,n) – направляющий вектор прямой.
Каноническое уравнение прямой в пространстве
(x-x0)/m =(y-y0)/n=(z-z0)/p
Уравнение прямой по двум точкам r0(x0,y0,z0) и r1(x1,y1,z1):
(x-x0)/(x1-x0)=(y-y0)/(y-y1)=(z-z0)/(z-z1)
Анализ взаимного расположения плоскости и прямой.
Прямая может принадлежать плоскости, быть ей параллельной или пересекать ее.
Для того, чтобы проверить принадлежит ли прямая плоскости, нам надо взять две точки на прямой и проверить, принадлежат подходят ли они в уравнение плоскости. Если да – то прямая принадлежит плоскости, в противном случае, нам надо постараться найти точку пересечения прямой и плоскости P (или определить, что они параллельны)
Зная уравнение плоскости, мы можем взять любые три точки A, B, C принадлежащие ей, не находящиеся на одной прямой. Возьмем любые не равные друг другу точки O, K, принадлежащие прямой.
Проверка пеерсекает ли пямая плоскость осуществляется через скаляроное произведение нормали к плоскости N и направляющего вектора вдоль прямой Rd. Склярное произведение этих двух нормализованных векторов есть косинус угла между векторами (cos (alpha) = (Rd,N) )
Далее приведены сами формулы требующиеся для рассчета:
(примечание, векторы обозначены большими буквами (или начинаются с большой буквы), скаляры - маленькими, векторное произведение векторов так: [ AB, BC ], скалярное произведение так: (AB, AC) ; модуль вектора-корень из суммы квадратов комтонетов-обозначен так | N | )
Найти два вектора лежащие в плоскости треугольника:
АВ=В-А;
AC=C-A;
найти нормаль треугольников и нормализировать ее
N=[AB,AC];
N=N / | N | ;
найти вектор вдоль прямой и нормализовать его:
Rd=K-O;
Rd=Rd / | Rd | ;
найти косинус угла между нормалью треугольника и прямой
cos( alpha) = (Rd, N) ;
Далее проверяем, если модуль косинус альфа >0.0001 значит есть пересечение с плоскостью, если модуль косинус альфа <=0.0001 - считаем, что прямая параллельна плоскости. Если она параллельна, на этом расчет заканчивается, если пересечение есть - то найдем точку пересечения P в несколько шагов:
OA=A-O;
s = (OA, N );
t = s / cos (alpha) ;
P= O + t * Rd;