- •Синхронизация процессов и цепочек
- •Венгерская нотация, ссылки и ресурсы
- •Стандартные кисти, иконки, курсоры
- •Пример:
- •Введение в ресурсы
- •Курсоры, пиктограммы и растровые изображения
- •Работа с текстом
- •Работа с мышью
- •Ресурс панель диалога
- •Основные понятия машинной графики
- •Рассмотрим такие примитивы, как вершина, отрезок, воксель и модели, строящиеся на их основе, а также функциональные модели. Полигональные модели
- •Воксельные модели
- •Поверхности свободных форм (функциональные модели)
- •Проекции
- •Различают следующие проекции.
- •Алгоритм Коэна - Сазерленда отсечения прямоугольной областью
- •Метод дихотомии
- •Задача удаления невидимых линий и поверхностей
- •Удаление нелицевых граней многогранника. Алгоритм Робертса
- •Алгоритм Варнока
- •Алгоритм Вейлера-Азертона
- •Метод z-буфера
- •Методы приоритетов. Алгоритм художника.
- •Алгоритм плавающего горизонта
- •Алгоритмы построчного сканирования для криволинейных поверхностей
- •Библиотека OpenGl
- •Простейшая программа
- •Создание формы
- •Формат пикселя
- •Вершины и система координат
- •Треугольники
- •Многоугольники
- •Область рисования
- •Преобразование координат. Матрицы
- •Видовое преобразование. Масштабирование, поворот и перенос
- •Параметры вида. Перспективная проекция
- •Буфер глубины
- •Надстройки над OpenGl
- •Источник света
- •Свойства материала и модель освещения
- •Отсечение
- •Анализ алгоритмов. Модель вычислений
- •Асимптотический анализ алгоритмов
- •Анализ рекурсивных алгоритмов
- •Метод заметающей прямой
- •Метод локусов. Задачи геометрического поиска
- •Задачи регионального поиска. Многомерное двоичное дерево
- •Задачи локализации точки. Метод луча
- •Локализация точки на планарном подразбиении. Метод полос
- •Некоторые основные понятия вычислительной геометрии
- •Построение звездчатого полигона
- •Предварительная разработка алгоритма построения выпуклой оболочки на плоскости
- •Метод обода Грэхема
- •Триангуляция Делоне
- •Диаграмма Вороного
- •Построение диаграммы Вороного
- •Модель osi
- •Уровни модели tcp/ip
Метод дихотомии
Метод аналогичен методу Коэна-Сазерленда, но разбиение строящееся на каждом шаге выполняется на две равные части, т.е. в средней точке. Вычисление кодов и середины отрезка осуществляется побитовыми сдвигами. Если отрезок не является полностью видимым или полностью невидимым, он делится пополам. Затем проверки осуществляются для каждой половины до тех пор пока не будет обнаружено пересечение со стороной отсекающего окна или длина разбиваемого отрезка не станет пренебрежимо малой, т.е. пока он не выродится в точку. После вырождения определяется видимость полученной точки. В результате процесс обнаружения пересечения сводится к двоичному поиску.
Более сложная модификация алгоритмов отсечения (выполняется аналогично):
для трехмерного случая – отсекателем является прямоугольный брусок (аксиометрическое проецирование) или усеченная пирамида (перспективное проецирование).
отсечение полигонов, а не отрезков (алгоритм Сазерленда-Ходжмана)
Задача удаления невидимых линий и поверхностей
Задача удаления невидимых линий и поверхностей является одной из наиболее интересных и сложных в компьютерной графике. Алгоритмы удаления заключаются в определении линий ребер, поверхностей или объемов, которые видимы или невидимы для наблюдателя, находящегося в заданной точке пространства.
Все алгоритмы такого рода так или иначе включают в себя сортировку, причем главная сортировка ведется по геометрическому расстоянию от тела, поверхности, ребра или точки до точки наблюдения или картинной плоскости. Основная идея, положенная в основу сортировки по расстоянию, заключается в том, что чем дальше расположен объект от точки наблюдения, тем больше вероятность, что он будет полностью или частично заслонен одним из объектов, более близких к точке наблюдения. После определения расстояний или приоритетов по глубине остается провести сортировку по горизонтали и по вертикали, чтобы выяснить, будет ли рассматриваемый объект действительно заслонен объектом, расположенным ближе к точке наблюдения. Эффективность любого алгоритма удаления в значительной мере зависит от эффективности процесса сортировки.
Методы решения задачи удаления невидимых линий и поверхностей различаются по следующим основным параметрам:
способу представления объектов;
способу визуализации сцены;
пространству, в котором проводится анализ видимости;
виду получаемого результата (его точности).
В качестве возможных способов представления объектов могут выступать аналитические (явные и неявные), параметрические и полигональные.
Существуют два различных способа изображения трехмерных объектов – каркасное (рисуются только ребра) и сплошное (рисуются закрашенные грани). Таким образом возникают два типа задач – удаление невидимых линий (ребер для каркасных изображений) и удаление невидимых поверхностей (граней для сплошных изображений).
Анализ видимости объектов можно производить как в исходном трехмерном пространстве, так и на картинной плоскости. Это приводит к разделению методов на два класса:
методы, работающие непосредственно в пространстве самих объектов;
методы, работающие в пространстве картинной плоскости, т.е. работающие с проекциями объектов.
Получаемый результат представляет собой либо набор видимых областей или отрезков, заданных с машинной точностью (имеет непрерывный вид), либо информацию о ближайшем объекте для каждого пикселя экрана (имеет дискретный вид).
Методы первого класса дают точное решение задачи удаления невидимых линий и поверхностей, никак не привязанное к растровым свойствам картинной плоскости. Так как эти методы работают с непрерывными исходными данными и получающиеся результаты не зависят от растровых свойств, то их называют непрерывными. Простейший вариант непрерывного подхода заключается в сравнении каждого объекта со всеми остальными, что дает временные затраты, пропорциональные n2, где n – количество объектов в сцене. Но непрерывные методы достаточно сложны.
Методы второго класса дают приближенное решение задачи видимости, определяя видимость только в некотором наборе точек картинной плоскости – в точках растровой решетки. Они сильно привязаны к растровым свойствам картинной плоскости и фактически заключаются в определении для каждого пикселя той грани, которая является ближайшей к нему вдоль направления проектирования. Изменения разрешения приводят к необходимости полного пересчета всего изображения. Простейший вариант дискретного метода имеет временные затраты порядка Cn, где C – общее количество пикселей экрана, а n – количество объектов. Дискретные методы отличаются простотой, но им свойственны ошибки дискретизации.
Важная роль в повышении методов удаления невидимых линий и граней отводится использованию когерентности. Выделяют не сколько типов когерентности:
когерентность в картинной плоскости – если данный пиксель соответствует точке грани Р, то скорее всего соседние пиксели также соответствуют точкам той же грани;
когерентность в пространстве объектов – если данный объект (грань) видим (невидим), то расположенный рядом объект (грань) скорее всего также является видимым (невидимым);
в случае построения анимации возникает третий тип когерентности – временная: грани, видимые (невидимые) в данном кадре, скорее всего будут видимы (невидимы) и в следующем.
