
- •Задачи компьютерной графики и ее место среди других методов обработки информации
- •Основные направления компьютерной графики. Основные структурные элементы системы машинной графики
- •Виды данных, представленных в форме изображений
- •Класс 1: тоновые и цветные изображения
- •Класс 2: двухуровневые или представляемые в нескольких «цветах» изображения
- •Класс 3: непрерывные кривые и линии
- •Класс 4: точки или многоугольники
- •Виды данных, представленных в форме изображений Понятие изображения
- •Понятие о структуре изображения. Основные графические элементы (примитивы)
- •Графические элементы (примитивы).
- •Видимые и невидимые поверхности. Ограничения на сложность изображения
- •Ограничения на сложность изображения
- •Тесты глубины Тест 1.
- •Тест 2.
- •Тест 3. Проверка сканирующей прямой
- •Алгоритмы удаления невидимых поверхностей
- •Алгоритм сканирующей прямой Уоткинса
- •Алгоритм Робертса
- •Растровое представление геометрических объектов. Растровая развертка отрезка
- •Растровая развертка отрезка.
- •Растровая развертка сплошных областей. Закраска многоугольников
- •Закраска многоугольников.
- •Растровая развертка сплошных областей. Закраска ограниченной области
- •Алгоритмы отсечения отрезков Отсечение отрезков
- •Алгоритм Сазерленда-Коэна
- •Алгоритм средней точки
- •Алгоритм Кируса-Бека
- •Метод Гуро
- •Метод Фонга
- •Модели расчета освещенности граней трехмерных объектов
- •Методы трассировки лучей. Метод прямой трассировки лучей
- •Классический метод обратной трассировки лучей
- •Методы повышения качества изображения при обратной трассировке лучей Текстурные карты и свойства материалов. Работа с растровыми картами (bmp, png, jpeg)
- •Отображение шероховатости (bump-mapping)
- •Сглаживание (antialiasing)
- •Кубические сплайны
Тесты глубины Тест 1.
Это тест применяется для объектов в трехмерном пространстве. Используя центральную проекцию вдоль оси Z, вычисляется расстояние dp от точки наблюдения P0 до проверяемой точки P и d1 до точки пересечения грани P1 с направлением проекции. Если dp> d1, то точка заслонена гранью и невидима.
Рисунок 10.3. Тест глубины 1
Тест 2.
Это применяется для объектов как в
трехмерном пространстве, так и в плоскости
при ортогональной проекции (при
)
для двух граней или точки и грани.
Пусть f1 и f2 - две грани, pr(f1) и pr(f2) - их проекции на картинную плоскость.
Первым этапом является нахождение точки
пересечения какого-либо ребра pr(f1)
с ребром рr(f2) -
.
Затем находятся точки
на
гранях f1 и f2, которые
проецируются в точку p12. Для этого
координаты xp и yp
подставляются в уравнения плоскостей
f1 и f2, откуда получаем
z1 и z2. Если
z1<z2, то грань f1
ближе к наблюдателю, чем грань f2.
Тест 3. Проверка сканирующей прямой
В этом тесте не недо искать точку
пересечения ребер проекции, как в тесте
2. Предполагается, что в картинной
плоскости проведена сканирующая линия,
для которой
.
Рисунок 10.5. Тест глубины 3 - проверка сканирующей прямой
Сканирующая прямая является проекцией некоторой сканирующей плоскости, параллельной оси Z. Сканирующая плоскость в свою очередь разрезает грани трехмерных фигур. Для каждой грани каждой фигуры определяются Z-координаты точек, проекции которых лежат на сканирующей прямой путем подстановки координат (х,у), где , в уравнение плоскости соответствующей грани. Тогда та грань из тех, которые пересекают сканирующую плоскость, является самой ближней к наблюдателю, для которой наименьшая Z-координата является наибольшей среди всех наибольших Z-координат других граней на интервале пересечения X-координат на сканирующей линии (пробном интервале).
Алгоритмы удаления невидимых поверхностей
Сложность задачи удаления невидимых линий и поверхностей привела к появлению большого числа различных способов ее решения. Многие из них ориентированы на специализированные приложения. Наилучшего решения общей задачи удаления невидимых линий и поверхностей не существует. На практике существует тесная взаимосвязь между скоростью работы алгоритма и детальностью его результата. Ни один из алгоритмов не может достигнуть наилучших оценок для этих двух показателей одновременно.
Все алгоритмы удаления невидимых линий (поверхностей) включают в себя сортировку. Эффективность любого алгоритма удаления невидимых линий или поверхностей в большой мере зависит от эффективности процесса сортировки.
Алгоритмы удаления невидимых линий или поверхностей можно классифицировать по способу выбора системы координат или пространства, в котором они работают. Алгоритмы, работающие в объектном пространстве, имеют дело с физической системой координат, в которой описаны эти объекты. При этом получаются весьма точные результаты, ограниченные, вообще говоря, лишь точностью вычислений. Полученные изображения можно свободно увеличивать во много раз. Алгоритмы, работающие в объектном пространстве, особенно полезны в тех приложениях, где необходима высокая точность. Алгоритмы же, работающие в пространстве изображения, имеют дело с системой координат того экрана, на котором объекты визуализируются. При этом точность вычислений ограничена разрешающей способностью экрана. Результаты, полученные в пространстве изображения, а затем увеличенные во много раз, не будут соответствовать исходной сцене. Например, могут не совпасть концы отрезков. Алгоритмы, формирующие список приоритетов, работают попеременно в обеих упомянутых системах координат.
Объем вычислений для любого алгоритма,
работающего в объектном пространстве,
и сравнивающего каждый объект сцены со
всеми остальными объектами этой сцены,
растет теоретически как квадрат числа
объектов (n2). Аналогично, объем
вычислений любого алгоритма, работающего
в пространстве изображения и сравнивающего
каждый объект сцены с позициями всех
пикселей в системе координат экрана,
растет теоретически, как
.
Здесь n обозначает количество
объектов (тел, плоскостей или ребер) в
сцене, а N - число пикселей. Теоретически
трудоемкость алгоритмов, работающих в
объектном пространстве, меньше
трудоемкости алгоритмов, работающих в
пространстве изображения, при n<N.
Поскольку N обычно равно (512)2,
то теоретически большинство алгоритмов
следует реализовывать в объектном
пространстве. Однако на практике это
не так. Дело в том, что алгоритмы,
работающие в пространстве изображения,
более эффективны потому, что для них
легче воспользоваться преимуществом
когерентности при растровой реализации.
Наиболее известными алгоритмами удаления невидимых поверхностей являются:
алгоритм Робертса;
алгоритм количественной невидимости Аппеля;
алгоритм приоритетов Энкарнако;
алгоритм сканирующей прямой Уоткинса.
Алгоритм z-буфера
Все эти алгоритмы используют в том или ином виде основные тесты, рассмотренные выше.