- •Синхронизация процессов и цепочек
- •Венгерская нотация, ссылки и ресурсы
- •Стандартные кисти, иконки, курсоры
- •Пример:
- •Введение в ресурсы
- •Курсоры, пиктограммы и растровые изображения
- •Работа с текстом
- •Работа с мышью
- •Ресурс панель диалога
- •Основные понятия машинной графики
- •Рассмотрим такие примитивы, как вершина, отрезок, воксель и модели, строящиеся на их основе, а также функциональные модели. Полигональные модели
- •Воксельные модели
- •Поверхности свободных форм (функциональные модели)
- •Проекции
- •Различают следующие проекции.
- •Алгоритм Коэна - Сазерленда отсечения прямоугольной областью
- •Метод дихотомии
- •Задача удаления невидимых линий и поверхностей
- •Удаление нелицевых граней многогранника. Алгоритм Робертса
- •Алгоритм Варнока
- •Алгоритм Вейлера-Азертона
- •Метод z-буфера
- •Методы приоритетов. Алгоритм художника.
- •Алгоритм плавающего горизонта
- •Алгоритмы построчного сканирования для криволинейных поверхностей
- •Библиотека OpenGl
- •Простейшая программа
- •Создание формы
- •Формат пикселя
- •Вершины и система координат
- •Треугольники
- •Многоугольники
- •Область рисования
- •Преобразование координат. Матрицы
- •Видовое преобразование. Масштабирование, поворот и перенос
- •Параметры вида. Перспективная проекция
- •Буфер глубины
- •Надстройки над OpenGl
- •Источник света
- •Свойства материала и модель освещения
- •Отсечение
- •Анализ алгоритмов. Модель вычислений
- •Асимптотический анализ алгоритмов
- •Анализ рекурсивных алгоритмов
- •Метод заметающей прямой
- •Метод локусов. Задачи геометрического поиска
- •Задачи регионального поиска. Многомерное двоичное дерево
- •Задачи локализации точки. Метод луча
- •Локализация точки на планарном подразбиении. Метод полос
- •Некоторые основные понятия вычислительной геометрии
- •Построение звездчатого полигона
- •Предварительная разработка алгоритма построения выпуклой оболочки на плоскости
- •Метод обода Грэхема
- •Триангуляция Делоне
- •Диаграмма Вороного
- •Построение диаграммы Вороного
- •Модель osi
- •Уровни модели tcp/ip
Триангуляция Делоне
Триангуляцией полигона называется декомпозиция полигона в набор треугольников. Триангуляция используется для упрощения решения задачи в пределах области со сложной конфигурацией, и сведения ее к более простой задаче в пределах треугольника.
Отрезки прямых линий при триангуляции не могут пересекаться – они могут только встречаться в общих точках. Поскольку отрезки прямых линий замыкают треугольники будем считать их ребрами.
Рис. Два варианта триангуляции для одного и того же набора точек.
Для данного набора точек S : граничные точки – те, которые лежат на границе выпуклой оболочки conv(S), внутренние точки – лежат внутри выпуклой оболочки. К ребрам оболочки отнесем ребра, расположенные вдоль границы выпуклой оболочки conv(S), а к внутренним ребрам – все остальные ребра, образующие сеть треугольников внутри выпуклой оболочки. Каждое ребро триангуляции является границей двух областей: каждое внутреннее ребро находится между двумя треугольниками, а каждое ребро оболочки – между треугольником и бесконечной плоскостью.
Любой набор точек, за исключением нескольких тривиальных случаев допускает более одного способа триангуляции. Но любой способ триангуляции для данного набора определяет одинаковое число треугольников.
Рассмотрим алгоритм формирования специального вида триангуляции, известный как триангуляция Делоне. Эта триангуляция хорошо сбалансирована в том смысле, что формируемые треугольники стремятся к равносторонним (равноугольным). См. левый рисунок выше. Триангуляция будет триангуляцией Делоне, если окружность описанная вокруг любого треугольника, не содержит внутри ни одной другой точки. Триангуляция Делоне будет уникальна, если никакие четыре точки из набора S не лежат на одной описанной окружности.
Схема алгоритма.
Вначале текущая триангуляция состоит из единственного ребра оболочки. На каждой итерации алгоритм ищет новый треугольник, который подключается к границе текущей триангуляции. По окончании работы алгоритма текущая триангуляция становится триангуляцией Делоне.
Введем классификацию ребер:
спящее ребро, если оно еще не обнаружено алгоритмом
живое ребро, если оно обнаружено, но известна только одна примыкающая к нему область
мертвое ребро, если оно обнаружено алгоритмом и известны обе примыкающие к нему области.
Вначале живым является единственное ребро, принадлежащее выпуклой оболочке – к нему примыкает неограниченная плоскость, а все остальные ребра – спящие. По мере работы алгоритма ребра из спящих становятся живыми, а затем мертвыми. Граница на каждом этапе состоит из набора живых ребер.
Алгоритм действует сверху вниз и слева направо.
Граница на каждом этапе выделена толстой линией.
Далее необходимо решить задачу поиска сопряженной точки для ребра.
При поиске сопряженной для ребра точки для ребра ab будем рассматривать только те точки pS, которые лежат справа от ab. Центр окружности, описанной вокруг любых трех точек a, b, c лежит на пересечении перпендикуляров, проведенных через середины отрезков ab и bp. (здесь используется тот факт, что перпендикуляры в серединах ребер треугольников пересекаются в центре описанной окружности треугольника). Вместо вычисления центра окружность будем вычислять его параметрическое значение вдоль перпендикуляра к середине ребра ab. Таким образом можно осуществить поиск наименьшего параметрического значения.
Алгоритм для вычисления триангуляции Делоне по набору из N точек выполняется за время O(N2), поскольку при каждой итерации из границы исключается одно ребро.
