- •1. Цвет в компьютерной графике 13
- •2. Геометрические преобразования 20
- •3. Представление геометрической информации 37
- •4. Удаление невидимых поверхностей и линий 45
- •5. Проекции пространственных сцен 55
- •5.4. Вопросы и упражнения 67
- •10.6 Вопросы и упражнения 108
- •12.4 Вопросы и упражнения 118
- •Введение Предмет и область применения компьютерной графики
- •1. Отображение информации
- •2. Проектирование
- •3. Моделирование
- •4. Графический пользовательский интерфейс
- •Краткая история
- •Технические средства поддержки компьютерной графики
- •Вопросы и упражнения
- •1. Цвет в компьютерной графике
- •1.1. О природе света и цвета
- •1.2. Цветовой график мко
- •1.3. Цветовые модели rgb и cmy
- •1.4. Другие цветовые модели
- •1.5. Вопросы и упражнения
- •2. Геометрические преобразования
- •2.1. Системы координат и векторы на плоскости и в трёхмерном пространстве
- •2.2. Уравнения прямой и плоскости
- •2.3. Аналитическое представление кривых и поверхностей
- •2.4. Пересечение луча с плоскостью и сферой
- •2.5. Интерполяция функций одной и двух переменных
- •2.6. Матрицы
- •2.7. Геометрические преобразования (перенос, масштабирование, вращение)
- •2.8. Переход в другую систему координат
- •2.9. Задача вращения относительно произвольной оси
- •2.10. Вопросы и упражнения
- •3. Представление геометрической информации
- •3.1. Геометрические примитивы
- •Полигональные модели
- •Воксельные модели
- •Поверхности свободных форм (функциональные модели)
- •3.2. Системы координат: мировая, объектная, наблюдателя и экранная
- •3.3. Однородные координаты
- •3.4. Вопросы и упражнения
- •4. Удаление невидимых поверхностей и линий
- •4.1. Алгоритм Робертса
- •4.2. Метод z-буфера
- •4.3. Методы приоритетов (художника, плавающего горизонта)
- •4.4. Алгоритмы построчного сканирования для криволинейных поверхностей
- •4.5. Метод двоичного разбиения пространства
- •4.6. Метод трассировки лучей
- •4.7. Вопросы и упражнения
- •5. Проекции пространственных сцен
- •5.1. Основные типы проекций
- •Параллельные проекции
- •Центральные проекции
- •5.2. Математический аппарат
- •Ортогональные проекции
- •Косоугольные проекции
- •Центральные проекции
- •5.3. Специальные картографические проекции. Экзотические проекции земной сферы
- •Стереографическая проекция
- •Гномоническая проекция
- •Ортографическая проекция
- •Проекции на цилиндр
- •Проекция Меркатора
- •Проекции на многогранник
- •Необычные проекции
- •5.4. Вопросы и упражнения
- •6. Растровое преобразование графических примитивов
- •6.1. Алгоритм Брезенхема растровой дискретизации отрезка
- •6.2. Алгоритмы Брезенхема растровой дискретизации окружности и эллипса
- •6.3. Алгоритмы заполнения областей
- •6.4. Вопросы и упражнения
- •7. Закрашивание. Рендеринг полигональных моделей
- •7.1. Простая модель освещения
- •7.2. Закраска граней Плоское закрашивание
- •Закраска методом Гуро
- •Закраска методом Фонга
- •7.3. Более сложные модели освещения
- •7.4. Устранение ступенчатости (антиэлайзинг)
- •7.5. Вопросы и упражнения
- •8. Визуализация пространственных реалистических сцен
- •8.1. Трехмерный графический конвейер
- •8.2. Свето-теневой анализ
- •8.3. Глобальная модель освещения с трассировкой лучей
- •8.4. Текстуры
- •8.5. Вопросы и упражнения
- •9. Введение в вычислительную геометрию
- •9.1 Вычислительная сложность алгоритмов
- •9.2 Основные геометрические объекты
- •9.3 Вопросы и упражнения
- •10. Триангуляция Делоне и диаграмма Вороного
- •10.1 Введение
- •10.2 Разбиение Делоне
- •10.3 Разбиение Вороного
- •Многогранник Вороного
- •Теорема о разбиении Вороного
- •10.4 Дуальность разбиений Вороного и Делоне
- •10.5 Алгоритм построения тетраэдризации Делоне
- •Триангуляция Делоне
- •Ячейки Вороного
- •10.6 Вопросы и упражнения
- •11. Алгоритмы построения выпуклой оболочки и триангуляции
- •11.1. Алгоритм построения выпуклой оболочки с использованием метода сортировки
- •11.2 Алгоритм построения триангуляции
- •12. Алгоритмы геометрического поиска
- •12.1 Поиск в плоском случае
- •12.2 Поиск на множестве тетраэдров
- •12.3 Поиск на множестве произвольных несамопересекающихся многогранников е3
- •12.4 Вопросы и упражнения
- •Список литературы
Ячейки Вороного
Ячейки Вороного строятся только для внутренних точек множества (т.е. для точек не лежащих на оболочке множества). Значит нужно выделить такие точки и построить вокруг каждой ячейку Вороного. Затем полученные ячейки объединяются в единую структуру.
Опишем построение отдельной ячейки Вороного:
I этап: поиск вершин ячейки Вороного
Вход:
По аналогии с двумерным случаем, вершинами ячейки являются центры описанных вокруг тетраэдров Делоне сфер. Для расчёта этих центров берутся тетраэдры, содержащие точку, вокруг которой строится ячейка (далее: точка p).
Создадим очередь B, элементами которой будут указатели на грани тетраэдров.
Возьмём какой-либо тетраэдр, содержащий точку p. Вычислив центр описанной сферы, занесём его в массив вершин ячейки. Добавим к B три грани этого тетраэдра, содержащие p. Пометим тетраэдр.
Берём элемент с верхушки очереди: b=first(B).
Если грань b принадлежит не помеченному тетраэдру, то переходим по грани b к следующему тетраэдру.
Вычислив центр описанной вокруг него сферы, занесём его в массив вершин ячейки. Добавим к B две грани (три грани содержат точку, а та из них, по которой перешли к данному тетраэдру, уже обработана) этого тетраэдра, содержащие p. Пометим тетраэдр.
Если очередь B не пуста, то перейти к (3).
Получим массив вершин ячейки. Т.о. задача сводится к построению выпуклой оболочки множества точек. Алгоритм использует метод «заворачивания подарка», который заключается в последовательном обходе точек множества, лежащих на его границе.
Пусть одна грань оболочки (грань f0) уже известна.
Создадим очередь Q, содержащую ребра оболочки.
Занесём в Q грани f0.
Берём элемент с верхушки очереди: q=first(Q).
f – грань, к которой принадлежит q.
Найдём точку p из множества, такую, что плоскость, проходящая через q и эту точку, образует с f максимальный угол <
.Построим новую грань на q и p. Занесём её рёбра в Q, кроме q, и тех, которые не смыкаются с другими гранями.
Если очередь Q не пуста, то перейти к (4).
Получим выпуклую оболочку, которая и будет являться ячейкой Вороного.
10.6 Вопросы и упражнения
Дайте определение триангуляции Делоне.
Сформулируйте задачу построения триангуляции в пространстве.
Привести пример неоднозначной триангуляции Делоне.
Дайте определение диаграммы Вороного.
Для каких центров из конечной системы точек, для которой строится диаграмма Вороного, их ячейка Вороного бесконечна.
В чем состоит дуальность разбиений Делоне и Вороного?
Адаптировать алгоритм построения триангуляции Делоне методом вкатывания «пустого» шара в пространстве к подобной задаче на плоскости.
Сколько минимально ячеек в диаграмме Вороного на плоскости и в пространстве может сходиться в одной точке?
11. Алгоритмы построения выпуклой оболочки и триангуляции
11.1. Алгоритм построения выпуклой оболочки с использованием метода сортировки
Задано множество точек S(p1,…,pN),
для которого произведена лексикографическая
сортировка по x и y.
Т.е.
.
если:
Либо Y1 < Y2
Либо Y1 = Y2 и X1 < X2
Точки, Y-координаты которых совпадают, называются уровнями.
Будем считать, что точки расположены так, как показано на рис. 11.1:
Рис. 11.1.
Примечание: Pmin_x – множество точек из множества S таких, что координата Х – минимальна Pmin_y – множество точек из множества S таких, что координата Y – минимальна Pmax_x – множество точек из множества S таких, что координата Х – максимальна Pmax_y – множество точек из множества S таких, что координата Y – максимальна Множество точек Pmin_y находятся на M-уровне Множество точек Pmax_y находятся на 0-уровне |
Разобьем множество точек на квадранты.
Построим выпуклую оболочку для I- квадранта. (Для остальных квадрантов оболочка строится аналогично).
Шаг 1: из множества точек {Pmin_y} выбираем ту, координата Х которой максимальна. Обозначим ее pi(X1,Y1)
Шаг 2: из множества точек {Pmax_x} выбираем ту, координата Y которой минимальна. Обозначим ее pj(X2,Y2)
Шаг 3: Среди точек множества S, ищем точку p(X1,Y) (на уровне M-1 или выше), такую что для любого X1 больше X. Обозначим ее как pr
Рис. 11.2.
Так как точки отсортированы в
лексикографическом порядке, то возможен
бинарный поиск (дихотомия). Т. е. сложность
алгоритма ~
,
где N – количество
точек на уровне.
Шаг 4: Заносим точки pi, pr и pj в соответствующие структуры и переобозначим pi = pr.
Шаг 5: Повторяем шаг 3-4 до тех пор пока pi не совпадет с pj.
Шаг 6: Если в построенной нами выпуклой оболочки встречаются вогнутые сегменты то соединяем крайние точки таких сегментов (Рис. 11.3).
|
Рис. 11.3. Преобразование выпуклой оболочки.
|
