Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы автоматизированного проектирования (Бори...docx
Скачиваний:
43
Добавлен:
09.11.2019
Размер:
1.28 Mб
Скачать

Исключение сравнения по глубине с помощью оболочек

Ч тобы избежать ненужных сравнений между объектами, используются экранные оболочки для исключения лишних отсечений.

Принятие решения основано на том, что если оболочки проекци не пересекаются, то не надо проверять, перекрываются ли ребра одного многоугольника с ребрами другого многоугольника.

На практике же требуется выполнять более подробный анализ, так как оболочки могут пересекаться, а многоугольники – нет.

Можно также использовать пространственные (3D) оболочки, окружающие пространственные объекты.

Можно использовать одномерные оболочки для указания границ в пределах одного измерения, например, чтобы выяснить, перекрываются ли два многоугольника в напрвлении Z.

Перекрытие по оси Z отсутствует, если или .

Во всех этих случаях самым сложным является определить саму оболочку.

Алгоритм сортировки по глубине

В этом алгоритме применяется подход, состоящий из трех шагов:

  1. Упрорядочение всех многоугольников по их наибольшим z-координатам.

  2. Разрешение всех неопределенностей при перекрытии z-оболочек.

  3. Преобразование каждого многоугольника в растровую форму в порядке уменьшения их наибольшей Z-координаты.

Шаг 1. Упорядочение многоугольников.

Основная идея алгоритма – упрорядочить многоугольники в соответствии с их удаленностью от точки зрения и их размещение в буфере регенерации в порядке убывания расстояния. Ближайшие многоугольники преобразуются в растровую форму последними и закрывают более удаленные многоугольники, так как записываются в буфер регенерации поверх старых. При разложении каждого многоугольника в растр, значения его пикселей вычисляются с использованием одного из правил тоновой (цветовой) закраски.

Шаг 2. Разрешение неопределенностей.

Случаи, при которых перекрываются оболочки многоугольников:

Обозначим через P многоугольник, находящийся в конце упорядоченного списка многоугольников. До записи в буфер регенерации этот многоугольник нужно сравнить с каждой гранью Q, z-оболочка которой перекрывает z-оболочку многоугольника P.

Проверка состоит не более чем из 5 шагов (тестов), которые выполняются в порядке возрастания сложности. Как только на любом из шагов получается утвердительный ответ, многоугольник P сразу преобразуется в растровую форму (Шаг 3).

Этими 5 тестами являются:

  1. x-оболочки многоугольников не перекрываются, поэтому сами многоугольники тоже не перекрываются;

  2. y-оболочки многоугольников не перекрываются, поэтому сами многоугольники тоже не перекрываются;

  3. P целиком лежит с той стороны от плоскости Q, которая дальше от точки зрения; (утвердительный ответ в тесте 3)

  1. Q целиком лежит с той стороны от плоскости P, которая ближе к точке зрения;

(отрицательный ответ в тесте 3, но положительный в тесте 4)

  1. Проекции многоугольников на экран (плоскость xy) не перекрываются. Это определяется путем сравнения ребер одного многоугольника с ребрами другого многоугольника.

Если во всех 5 тестах получен отрицательный ответ, то предполагается, что P закрывает Q, и надо поменять местами P и Q в списке многоугольников.

Возможны случаи, когда алгоритм зацикливается:

Поэтому повторное перемещение многоугольников в списке не допускается.

Рассмотренный алгоритм работает и в пространстве изображения, и в пространстве объекта.