Алгоритм Вейлера-Азертона (Weiler-Atherton)

Разбиение картинной плоскости можно производить не только прямыми, параллель­ными координатным осям, но и по границам проекций граней. В результате получается точное решение задачи.

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

В качестве первого шага производится сортировка всех граней по глубине (front-to-back).

Затем из списка оставшихся граней берется ближайшая грань A и все остальные грани обрезаются по этой грани. Если проекция грани B пересекает проекцию грани A, то грань B разбивается на части так, что каждая часть либо содержится в грани A, либо не имеет с ней общих внутренних точек.

Таким образом, получаются два множества граней: F in – грани, проекции которых со­держатся в проекции грани A, (сюда входит и сама грань A), и F out – грани, проекции ко­торых не имеют общих внутренних точек с проекцией грани A.

Множество F in обычно называют множеством граней, внутренних по отношению к A.

Однако множестве F in могут быть грани, лежащие к наблюдателю ближе, чем сама грань A (это возможно, на­пример, при циклическом наложении граней). В этом случае каждая такая грань используется для разбиения всех граней из множества F in (включая исходную грань A). Когда рекурсивное разбиение завершится, то все грани из первого множества выводятся из набора оставшихся граней (их уже ничто не может закрывать). Затем из набора оставшихся граней F out берется очередная грань и процедура повторяется.

Рассмотрим простейший случай для двух граней A и B (Рис. 5.19).

Рис. 4.19 Пример разбиения граней

Будем считать, что грань A расположена ближе, чем грань B. Тогда на первом шаге для разбиения используется именно используется именно грань A. Грань B разбивается на две части. Часть B 1 попадает в первое множество F in и, так как она лежит дальше грани A, удаляется.

После этого выводится грань A и в списке оставшихся граней остается только грань B 2. Так как кроме нее дру­гих граней не осталось, то эта грань выводится, и на этом ра­бота завершается.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: