- •Синхронизация процессов и цепочек
- •Венгерская нотация, ссылки и ресурсы
- •Стандартные кисти, иконки, курсоры
- •Пример:
- •Введение в ресурсы
- •Курсоры, пиктограммы и растровые изображения
- •Работа с текстом
- •Работа с мышью
- •Ресурс панель диалога
- •Основные понятия машинной графики
- •Рассмотрим такие примитивы, как вершина, отрезок, воксель и модели, строящиеся на их основе, а также функциональные модели. Полигональные модели
- •Воксельные модели
- •Поверхности свободных форм (функциональные модели)
- •Проекции
- •Различают следующие проекции.
- •Алгоритм Коэна - Сазерленда отсечения прямоугольной областью
- •Метод дихотомии
- •Задача удаления невидимых линий и поверхностей
- •Удаление нелицевых граней многогранника. Алгоритм Робертса
- •Алгоритм Варнока
- •Алгоритм Вейлера-Азертона
- •Метод z-буфера
- •Методы приоритетов. Алгоритм художника.
- •Алгоритм плавающего горизонта
- •Алгоритмы построчного сканирования для криволинейных поверхностей
- •Библиотека OpenGl
- •Простейшая программа
- •Создание формы
- •Формат пикселя
- •Вершины и система координат
- •Треугольники
- •Многоугольники
- •Область рисования
- •Преобразование координат. Матрицы
- •Видовое преобразование. Масштабирование, поворот и перенос
- •Параметры вида. Перспективная проекция
- •Буфер глубины
- •Надстройки над OpenGl
- •Источник света
- •Свойства материала и модель освещения
- •Отсечение
- •Анализ алгоритмов. Модель вычислений
- •Асимптотический анализ алгоритмов
- •Анализ рекурсивных алгоритмов
- •Метод заметающей прямой
- •Метод локусов. Задачи геометрического поиска
- •Задачи регионального поиска. Многомерное двоичное дерево
- •Задачи локализации точки. Метод луча
- •Локализация точки на планарном подразбиении. Метод полос
- •Некоторые основные понятия вычислительной геометрии
- •Построение звездчатого полигона
- •Предварительная разработка алгоритма построения выпуклой оболочки на плоскости
- •Метод обода Грэхема
- •Триангуляция Делоне
- •Диаграмма Вороного
- •Построение диаграммы Вороного
- •Модель osi
- •Уровни модели tcp/ip
Задачи регионального поиска. Многомерное двоичное дерево
Задачу регионального поиска на двухмерном случае можно решить используя дихотомию. Всю плоскость можно считать бесконечным прямоугольником, который будет разрезан сначала на две полуплоскости прямой, параллельной одной из осей, скажем оси у. Затем каждая из этих полуплоскостей может разрезаться еще раз прямой, параллельной оси х, и т.д., меняя на каждом шаге направление разрезающей линии. При выборе разрезающей линии следует пользоваться принципом получения приблизительно равного числа элементов по каждую сторону от разреза (т.е. дихотомия). Эта идея является основой метода многомерного двоичного дерева.
Назовем обобщенным прямоугольником такую область на плоскости, которая определена декартовым произведением [x1,x2] [y1,y2] х-интервала [x1,x2] и у-интервала [y1,y2], включая предельные случаи, когда в любой комбинации допускается: x1=–, x2=, y1=–, y2=. Прямоугольниками будем считать даже неограниченные полосы и всю плоскость.
Процесс разбиения множества S путем разрезания плоскости будем сочетать с построением двумерного двоичного дерева Т. С каждым v узлом Т неявно свяжем прямоугольник R(v) (он определен выше) и подмножество S(v)S точек, лежащих внутри R(v). Явно же, т.е. как фактические параметры этой структуры данных, свяжем с v одну избранную точку P(v) из S(v) и секущую прямую L(v), проходящую через P(v) и параллельную одной из координатных осей.
Этот процесс начинается с определения корня Т. С R(корень) соотносится вся плоскость, и полагается, что S(корень)=S. Затем определяется точка pS, такая что x(p) – медиана множества абсцисс точек из S(корень), и полагается, что P(корень)=p, а с L(корень) соотносится прямая с уравнением x=x(p). Точка p разбивает S на два множества приблизительно равной мощности, назначенных потомками корня. Процесс дробления прекращается, когда обнаружен прямоугольник, не содержащий внутри точек, соответствующий ему узел является листом дерева Т.
Такая структура данных часто называется 2-D-деревом.
Для использования 2-D-дерева в региональном поиске используется алгоритмическая схема метода “разделяй и властвуй”.
Таким образом, метод дает алгоритм, характеризующийся:
(N) – затраты памяти (по узлу на точку множества)
O(NlogN) – время предобработки (сортировка абсцисс и ординат точек множества)
O(
)
– время запроса.
Время запроса пропорционально общему числу узлов в Т, посещаемых поисковым алгоритмом, так как в каждом узле этот алгоритм затрачивает константное время.
Время потрачено в узле v не зря, если точка P(v) выбирается (продуктивный узел), иначе этот узел считается непродуктивным.
Рассмотрим различные типы пересечений D с R(v), когда это пересечение не пусто.
Оценка времени прохождения непродуктивных узлов представляет собой оценку худшего случая и равна O( ).
