Слайд 3Каркасные модели
Геометрический объект в каркасной модели представляется набором ребер. В
качестве ребер выступают отрезки, кривые различных порядков, сплайны и др.
Слайд 4Поверхностные модели
В поверхностных моделях геометрический объект задается набором ограничивающих поверхностей.
Слайд 5Твердотельные модели
В твердотельных моделях объект характеризуется границей и заполнением. Твердотельная
модель описывается в терминах того трёхмерного объема, который занимает определяемое
ею тело, т.е. твердотельное моделирование обеспечивает полное однозначное описание трёхмерной геометрической формы.
Слайд 6Аналитические модели
Для описания кривой на плоскости можно подобрать соответствующее аналитическое
выражение.
Слайд 7Аналитические модели
Аналитически можно задать трехмерную поверхность.
Слайд 8Аналитические модели
При аналитическом моделировании объектов часто используют поверхности второго порядка:
Ax2
+ By2 + Cz2 + Dxy + Exz + Fyz
+ Gx + Hy + Jz + K = 0
Слайд 10Аналитические модели
Кубические кривые
x = X(t); y = Y(t); z =
Z(t)
Слайд 11Аналитические модели
Построение кривых
Слайд 12Аналитические модели
Кубический полином
Для нахождения кубического полинома требуется установить значения его
четырех коэффициентов. Для этого следует наложить на кривую четыре дополнительных
условия. Такими условиями служат значения кубического сегмента на концевых точках, значения касательного вектора и условия связности между соседними сегментами.
Касательный вектор:
Слайд 13Аналитические модели
Базовая матрица, геометрический вектор, стыковочная матрица
Q(t) = TC =
TMG = BG
M – базовая матрица четвертого порядка
G – геометрический
вектор (G = [G1 G2 G3 G4]T)
B – стыковочная матрица (B = TM)
Слайд 14Аналитические модели
Кривые Эрмита
Кривые Эрмита – частный случай кубических полиномиальных кривых,
которые задаются концевыми точками P1, P4 и касательными векторами R1,
R4 в них.
Слайд 15Аналитические модели
Базовая матрица Эрмита
Слайд 16Аналитические модели
Матричное уравнение кривых Эрмита
X(t) = TMGx, Y(t) = TMGy,
Z(t) = TMGz
Q(t) = TMG
G = [P1 P4 R1 R4]T
Слайд 17Аналитические модели
Кривые Безье
Кривые Безье – специальный вид кубических полиномиальных кривых,
у которых для определения положения касательных векторов используются специальные контрольные
точки, не принадлежащие самому объекту. Отрезки, соединяющие контрольные точки, образуют выпуклую оболочку контрольных точек. В общем случае выпуклая оболочка может и не касаться всех контрольных точек.
Слайд 18Аналитические модели
Параметры кривых Безье
Начальный R1 и конечный R4 касательные векторы
кривой Безье зависят от радиус-векторов P1, P2, P3 и P4,
соединяющих контрольные точки с началом координат:
Слайд 19Аналитические модели
Расчет параметров кривых Безье
Mh, Gh – базовая матрица и
геометрический вектор Эрмита
Mb, Gb – базовая матрица и геометрический вектор
Безье
Mb – матрица преобразования геометрических векторов
Слайд 20Аналитические модели
Базовая матрица кривых Безье
Слайд 21Аналитические модели
Кубические B-сплайны
B-сплайны – совокупность полиномиальных сегментов, положение которых задается
контрольными точками. Кубический B-сплайн задается последовательностью полиномиальных сегментов Q3, Q4,
…, Qm, положение которых зависит от контрольных точек P0, P1, …, Pm (m 3). Сегменты определяются на интервалах ti t < ti+1, 3 i < m, t3 = 0, ti+1 – ti = 1.
Геометрический вектор i-го сегмента:
Слайд 22Аналитические модели
Пример кубического B-сплайна
Слайд 23Аналитические модели
Базовая матрица кубического B-сплайна
Слайд 24Аналитические модели
Бикубические поверхности
x = X(s, t); y = Y(s, t);
z = Z(s, t)
A(s, t) = a11s3t3 + a12s3t2 +
a13s3t + a14s3 + a21s2t3 + a22s2t2 + a23s2t + a14s2 + a31st3 + a32st2 + a33st + a44s + a41t3 + a42t2 + a43t + a44
Слайд 25Аналитические модели
Поверхность произвольной формы разделяется на куски (patch), каждый из
которых аппроксимируется бикубической поверхностью таким образом, что бы в месте
стыка совпадали не только координаты точек, но и первые производные.
Слайд 26Аналитические модели
Каждый участок бикубической поверхности задается шестнадцатью точками. Тогда бикубическая
поверхность в форме Безье задается в следующем виде:
X(s, t)
= SMbGbxMbTTT
Y(s, t) = SMbGbyMbTTT
Z(s, t) = SMbGbzMbTTT
или в форме B-сплайна
X(s, t) = SMsGsxMsTTT
Y(s, t) = SMsGsyMsTTT
Z(s, t) = SMsGszMsTTT
Слайд 27Аналитические модели
Точки бикубической поверхности в форме Безье:
(X, Y, Z)11, (X,
Y, Z)14, (X, Y, Z)41, (X, Y, Z)44 – координаты
четырех угловых точек;
(X, Y, Z)21, (X, Y, Z)22, (X, Y, Z)12;
(X, Y, Z)13, (X, Y, Z)23, (X, Y, Z)24;
(X, Y, Z)43, (X, Y, Z)33, (X, Y, Z)34;
(X, Y, Z)42, (X, Y, Z)32, (X, Y, Z)31 – концы касательных векторов.
Слайд 29Аналитические модели
11
Для сшивки двух кусков необходимо:
совпадение смежных
точек
отсутствие излома в поперечном
направлении
Слайд 30Полигональные модели
Кривая на плоскости аппроксимируется набором отрезков, каждый из которых
определяется двумя точками – начала и конца
Слайд 31Полигональные модели
В этом случае поверхность аппроксимируется плоскими полигонами.
Слайд 32Полигональные модели
Для моделирования трехмерных объектом чаще всего применяются выпуклые плоские
многоугольники (полигоны) с количеством вершин не более четырех.
Слайд 33Полигональные модели
Полигоны описывается набором вершин – точек, заданных в трехмерном
пространстве.
1: V1, V2, V4
2: V2, V3, V4
. . .
12:
V3, V9, V10
Слайд 34Аппроксимировать трехмерную плоскость можно с разной точностью. Количество вершин в
модели зависит от требуемого качества картинки и от ожидаемой скорости
рендеринга - чем больше вершин, тем выше качество и тем медленнее рендеринг.
Полигональные модели
Слайд 35Полигональные модели
Полигональная сетка – набор полигонов (граней), которые в совокупности
образуют форму объекта.
Полигональная сетка является практически во всех графических системах
стандартным способом представления широкого класса объемных форм.
Слайд 36Полигональные модели
Полигональная сетка задается списком полигонов и информацией о направлении,
куда обращен каждый полигон.
Информация о направлении задается в виде нормали к
плоскости грани.
Нормаль указывает внешнее направление от объекта.
Слайд 37Полигональные модели
Свойства полигональной сетки:
Монолитность – сетка представляет монолитный объект, если
совокупность его граней заключает в себе некоторое конечное пространство;
Связность –
сетка называется связной, если между любыми двумя вершинами существует непрерывный путь вдоль ребер полигона (если сетка не является связной, то обычно она представляет более одного объекта);
Простота – сетка называется простой, если отображаемый ею объект является монолитным и не содержит отверстий (это означает, что объект может быть деформирован в сферу, не подвергаясь разрезанию);
Плоскостность – сетка называется плоской, если каждая грань представляемого ею объекта является плоским полигоном, т.е. вершины каждой грани лежат в одной плоскости;
Выпуклость – сетка представляет выпуклый объект, если прямая, соединяющая любые две точки внутри этого объекта, целиком лежит внутри него.
Слайд 38Полигональные модели
Нормаль к плоской грани
N = (v2 – v1)(v3 –
Слайд 39Полигональные модели
Метод Ньюэлла
Слайд 40Полигональные модели
Если выполнять обход против часовой стрелки с наружной стороны
грани, то полученный вектор показывает направление наружу от грани.
Слайд 41Полигональные модели
V0 = (6, 1, 4), V1 = (7, 0,
9), V2 = (1, 1, 2).
Слайд 42Полигональные модели
//грань 0
glBegin(GL_POLYGON);
glNormal3f(0.577, 0.577, 0.577);
glVertex3f(1, 0, 0);
glVertex3f(0, 1, 0);
glVertex3f(0, 0,
1);
glEnd();
//грань 1
glBegin(GL_POLYGON);
glNormal3f(0, 0, -1);
glVertex3f(0, 0, 0);
glVertex3f(0, 1, 0);
glVertex3f(1, 0, 0);
glEnd();
//грань
2
glBegin(GL_POLYGON);
glNormal3f(-1, 0, 0);
glVertex3f(0, 0, 0);
glVertex3f(0, 0, 1);
glVertex3f(0, 1, 0);
glEnd();
//грань 3
glBegin(GL_POLYGON);
glNormal3f(0, -1, 0);
glVertex3f(1, 0, 0);
glVertex3f(0, 0, 1);
glVertex3f(0, 0, 0);
glEnd();
Описание тетраэдра в OpenGL
Слайд 43Полигональные модели
Структура хранения данных полигональной сетки:
в массиве вершин хранятся без
повторений координаты всех вершин;
в массиве нормалей хранятся без повторений компоненты
нормалей к каждой грани;
в массиве граней для каждой грани хранятся индексы вершин из массива вершин и индексы нормалей, ассоциированных с каждой вершиной грани.
Слайд 45Полигональная модель
Полиэдр – связная сетка из простых плоских полигонов, которая
ограничивает конечный объем пространства.
Каждое ребро полиэдра принадлежит ровно двум граням;
В
каждой вершине полиэдра встречается не менее трех ребер;
Грани полиэдра не являются взаимопроникающими: две грани не имеют общих точек или пересекаются только вдоль их общего ребра.
Слайд 46Полигональные модели
Фундаментальное соотношение между количеством граней F, ребер E и
вершин V простого многогранника устанавливает формула Эйлера:
V + F –
E = 2.
Обощение этой формулы на непростой полиэдр имеет вид:
V + F – E = 2 + H – 2G,
где H – общее число отверстий, имеющихся в гранях, G – число отверстий в самом полиэдре.
Слайд 47Полигональные модели
Если все грани полиэдра одинаковы и каждая из них
является правильным многоугольником, то объект называется правильным многогранником. Существует всего
пять таких объектов, которые называют платоновыми телами:
Тетраэдр: V = 4, F = 4, E = 6, грани – треугольники;
Гексаэдр: V = 8, F = 6, E = 12, грани – квадраты;
Октаэдр: V = 6, F = 8, E = 12, грани – треугольники;
Икосаэдр: V = 12, F = 20, E = 30, грани – треугольники;
Додекаэдр: V = 20, F = 12, E = 30, грани – пятиугольники.
Нормальный вектор к каждой грани платонового тела – это вектор из начала координат к центру грани, представляющему собой среднее значение вершин.