- •Синхронизация процессов и цепочек
- •Венгерская нотация, ссылки и ресурсы
- •Стандартные кисти, иконки, курсоры
- •Пример:
- •Введение в ресурсы
- •Курсоры, пиктограммы и растровые изображения
- •Работа с текстом
- •Работа с мышью
- •Ресурс панель диалога
- •Основные понятия машинной графики
- •Рассмотрим такие примитивы, как вершина, отрезок, воксель и модели, строящиеся на их основе, а также функциональные модели. Полигональные модели
- •Воксельные модели
- •Поверхности свободных форм (функциональные модели)
- •Проекции
- •Различают следующие проекции.
- •Алгоритм Коэна - Сазерленда отсечения прямоугольной областью
- •Метод дихотомии
- •Задача удаления невидимых линий и поверхностей
- •Удаление нелицевых граней многогранника. Алгоритм Робертса
- •Алгоритм Варнока
- •Алгоритм Вейлера-Азертона
- •Метод z-буфера
- •Методы приоритетов. Алгоритм художника.
- •Алгоритм плавающего горизонта
- •Алгоритмы построчного сканирования для криволинейных поверхностей
- •Библиотека OpenGl
- •Простейшая программа
- •Создание формы
- •Формат пикселя
- •Вершины и система координат
- •Треугольники
- •Многоугольники
- •Область рисования
- •Преобразование координат. Матрицы
- •Видовое преобразование. Масштабирование, поворот и перенос
- •Параметры вида. Перспективная проекция
- •Буфер глубины
- •Надстройки над OpenGl
- •Источник света
- •Свойства материала и модель освещения
- •Отсечение
- •Анализ алгоритмов. Модель вычислений
- •Асимптотический анализ алгоритмов
- •Анализ рекурсивных алгоритмов
- •Метод заметающей прямой
- •Метод локусов. Задачи геометрического поиска
- •Задачи регионального поиска. Многомерное двоичное дерево
- •Задачи локализации точки. Метод луча
- •Локализация точки на планарном подразбиении. Метод полос
- •Некоторые основные понятия вычислительной геометрии
- •Построение звездчатого полигона
- •Предварительная разработка алгоритма построения выпуклой оболочки на плоскости
- •Метод обода Грэхема
- •Триангуляция Делоне
- •Диаграмма Вороного
- •Построение диаграммы Вороного
- •Модель osi
- •Уровни модели tcp/ip
Некоторые основные понятия вычислительной геометрии
Опр. Полигоном называется замкнутая кривая на плоскости, образуемая отрезками прямых линий.
Опр. Область на плоскости считается выпуклой, если для любых двух точек внутри области отрезок прямой линии между этими двумя точками полностью лежит внутри области.
Опр. Пусть S конечный набор точек на плоскости. Выпуклая оболочка conv(S) равна пересечению всех выпуклых полигонов, которые содержат S. Т.е. conv(S) – это выпуклый полигон минимальной площади, содержащий все точки S.
Построение звездчатого полигона
П
усть
точки р и
Совокупность точек многоугольника, из которых видны все точки этого многоугольника, называется его ядром. Многоугольник называется звездчатым, если его ядро не пусто. Ядро звездчатого многоугольника всегда выпукло.
Рассмотрим задачу: на плоскости задан набор точек s0, s1, …, sn-1. требуется построить минимальный звездчатый многоугольник так, чтобы его ядро содержало точку s0.
Вначале многоугольник состоит из единственной точки s0, и на каждой итерации в него добавляется очередная точка набора. По окончании обхода всех точек получим искомый звездчатый многоугольник.
Для определения того, в какое место границы текущего многоугольника нужно вставить точку si, заметим, что все вершины звездчатого многоугольника должны быть полярно упорядочены вокруг любой точки его ядра, а значит относительно точки s0, принадлежащей ядру. Будем обходить границу многоугольника по часовой стрелке, начиная с точки s0, сравнивая каждый раз вставляемую точку и очередную точку границы. Функцию сравнения вершин определим, основываясь на вычислении полярных координат (r, ) точки относительно полюса s0. Введем следующее правило сравнения: точка p(Vp, p) считается меньше точки q(Vq, q), если p < q или p = q и Vp < Vq. При таком упорядочении, обход текущего многоугольника по часовой стрелке будет производится от больших точек к меньшим.
Предварительная разработка алгоритма построения выпуклой оболочки на плоскости
Опр. Точка р выпуклого множества S называется крайней, если не существует пары точек a, b S таких, что р лежит на открытом отрезке ab.
Множество Е крайних точек S представляет собой наименьшее подмножество S, обладающее тем свойством что conv(E)=conv(S), и Е в точности совпадает с множеством вершин conv(S).
Отсюда следует, что для того, чтобы найти выпуклую оболочку конечного множества точек, требуется:
Определить крайние точки.
Упорядочить эти точки так, чтобы они образовывали выпуклый полигон.
Теорема 1. Точка р не является крайней плоского выпуклого множества S только тогда, когда она лежит в некотором треугольнике, вершинами которого являются точки из S, но сама она не является вершиной этого треугольника.
Рис. Точка р не является крайней, так как она находится внутри треугольника (р1р2р3).
Теорема 2. Луч, выходящий из внутренней точки ограниченной выпуклой фигуры F, пересекает границу F в точности в одной точке.
Теорема 3. Последовательные вершины выпуклого полигона располагаются в порядке, соответствующем изменению угла относительно любой внутренней точки.
Рис. Вершины полигона Р упорядочены относительно точки q.
Если даны крайние точки некоторого множества, то его выпуклую оболочку можно найти, выбрав точку q, про которую известно, что она является внутренней точкой оболочки, и упорядочив затем крайние точки в соответствии с полярным углом относительно q. В качестве q можно взять центроид множества крайних точек.
Алгоритм со временем выполнения О(N4) не позволит обрабатывать большие наборы данных, поэтому рассмотрим алгоритм Грэхема.
