
- •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 Вопросы и упражнения
- •Список литературы
10.3 Разбиение Вороного
Рис. 10.2. Плоскость Вороного
Плоскость Вороного Pij точек i и j есть геометрическое место точек, равноудаленных от этих точек. Она проходит перпендикулярно через середину отрезка, их соединяющего. Для любой точки р этой плоскости Pij pi=pj. Плоскость Вороного делит пространство на два полупространства. Все точки одного их них ближе к точке i, а точки другого — к точке j.
Многогранник Вороного
Будем называть точки из {А} центрами.
Для любого центра системы {А} можно указать область пространства, все точки которой ближе к данному центру, чем к любому другому центру системы. Такая область называется многогранник Вороного или область Вороного. Заметим, что к многограннику Вороного обычно относят и его поверхность. Поэтому было бы более правильно вместо "ближе" говорить "не далее". Однако здесь не возникает недоразумений.
В трехмерном пространстве область Вороного любого центра i системы {А} есть выпуклый многогранник, в двумерном — выпуклый многоугольник. Легко понять, как они получаются. Соединим центр i отрезками прямых со всеми другими центрами системы и проведем через середины этих отрезков перпендикулярные плоскости, т.е. построим плоскости Вороного, связанные с центром i. Каждая их них, мы знаем, делит пространство на два полупространства. Точки одного из них лежат ближе к данному центру i, чем к соответствующему соседу. Пересечение всех полупространств, содержащих центр i, дает нам искомую область. Она является многогранником, поскольку ограничена плоскостями. Этот многогранник является выпуклым, так как по построению он целиком лежит по одну сторону от плоскости любой из его граней (это одно из определений выпуклости многогранника).
Рис. 10.3. Многогранник Вороного для центра i двумерной системы.
Двумерный многогранник Вороного показан на рис. 10.3. Несколько ближайших плоскостей Вороного ограничивают вокруг него область пространства, все точки которой ближе к данному центру, чем к любому другому центру системы. Плоскости Вороного центра i с соседями 1‑5 образуют грани многогранника Вороного. Эти соседи называются геометрическими соседями центра i. Из них 1–4 являются основными, а 5 — неосновным, для него точка пересечения отрезка i 5 со своей плоскостью Вороного лежит вне многогранника (точка x). Плоскость Вороного от соседа 6 проходит через вершину многогранника Вороного, но не образует грани. Центр 7 не образует грани у данного многогранника, его плоскость Вороного отсечена от центра i более близкими плоскостями.
Теорема о разбиении Вороного
Многогранники Вороного, построенные для каждого центра системы {А}, дают нам мозаику многогранников, которая называется разбиением Вороного. На рис. 10.4 изображена двумерная мозаика многогранников Вороного.
ТЕОРЕМА 1. Многогранники Вороного системы {А} не входят друг в друга и заполняют пространство, будучи смежными по целым граням. Разбиение пространства на многогранники Вороного однозначно определяется системой {А} и, наоборот, однозначно ее определяет.
Утверждения теоремы почти очевидны, но поскольку она лежит в основе всех дальнейших результатов, приведем ее доказательство.
Тот факт, что многогранники Вороного не входят друг в друга, следует из того, что расстояние между точками определяется однозначно. Никакая точка пространства не может одновременно быть ближе сразу к двум центрам системы. В крайнем случае она лежит на одинаковом расстоянии от двух или нескольких центров (в таком случае она принадлежит общей границе нескольких многогранников Вороного). Из таких же рассуждений, очевидно, заключаем, что в мозаике Вороного не может быть щелей, т е. точек, не принадлежащих никакому многограннику Вороного. Действительно, никакая точка пространства не может не быть ближе к какому-то центру системы.
Рис. 10.4. Двумерная иллюстрация разбиения Вороного системы точечных центров. Многогранники Вороного покрывают пространство без щелей и наложений.
Пусть многогранник Вороного некоторого центра i оказался смежен какой-то одной своей гранью с гранями многогранников Вороного двух разных центров j и k. В этом случае плоскости Вороного Pi} и Pik обязаны совпадать, поскольку, по предположению, они имеют общую часть на данной грани. Далее, центры j и k должны лежать на прямых, проходящих через центр перпендикулярно своим плоскостям Рij и Pik, Но поскольку это одна и та же плоскость, то оба центра должны лежать на одной и той же прямой. При этом они обязаны быть на равном расстоянии от центра. Из этих требований однозначно следует, что центры j и k могут только совпадать, Это доказывает, что каждая грань многогранника может быть смежной только с одной из граней другого многогранника. Другая ситуация, когда смежный центр один, но его грань совмещается не полностью с гранью нашего многогранника Вороного, представляется невозможной по той причине, что непокрытый участок грани открывал бы щель в разбиении Вороного, которых, как сказано выше, не может быть.
Однозначность разбиения данной системы видна из того, что никакая точка пространства не может при одном рассмотрении быть ближе к одному центру системы, а при втором оказаться ближе к другому. Обратное утверждение, что мозаика многогранников Вороного однозначно определяет систему центров, следует из того, что каждый многогранник имеет свой единственный центр, относительно которого он построен. Итак, теорема доказана полностью.
Важным следствием теоремы является то, что ребра и вершины мозаики Вороного образуют односвязную и совершенную, без "мертвых концов", сетку, Действительно, многогранники контактируют по целым граням, а в результате и по целым ребрам» Эта сетка называется сеткой Вороного и будет существенно использоваться в дальнейшем.
Приведем простые, но полезные свойства разбиения Вороного;
1) центры системы {А}, многогранники Вороного которых сходятся в общую вершину, лежат на одинаковом расстоянии от этой вершины;
2) центры системы {А}, многогранники Вороного которых имеют общее ребро, лежат на одинаковом расстоянии от прямой, проходящей вдоль этого ребра;
3) центры системы {А}, многогранники Вороного которых имеют общую грань, лежат на одинаковом расстоянии от плоскости этой грани;
Первое утверждение означает, что общая вершина многогранников является центром сферы, описанной вокруг соответствующих центров системы, Справедливость второго утверждения следует из того, что общее ребро является отрезком канала Вороного данной тройки центров. Последнее утверждение тривиально, ибо общая грань есть кусок плоскости Вороного соответствующих центров системы {А}.
Отметим еще одно свойство, которое справедливо, кстати, не только для разбиения Вороного, но и для любого разбиения пространства на выпуклые многогранники:
4) в каждой вершине разбиения пространства на выпуклые многогранники встречается не менее четырех многогранников, а в каждом ребре — не менее трех..