-
Notifications
You must be signed in to change notification settings - Fork 9
32. Алгоритм Вейлера Азертона удаления невидимых линий и поверхностей.
Pandas edited this page Jun 6, 2017
·
3 revisions
Алгоритм – попытка минимизировать количество шагов в алгоритме Варнока путём разбиения окна вдоль границ многоугольника.
Алгоритм
- Предварительная сортировка по глубине (для формирования списка приблизительных приоритетов)
- Отсечение по границам ближайшего к наблюдателю многоугольника, называемое сортировкой многоугольников на плоскости (в качестве отсекателя используется копия первого многоугольника из списка приблизельных приоритетов. отсекаться будут все многоугольники в этом списке, включая первый. формируется 2 списка – внутренний (для каждого отсекаемого многоугольника то часть, которая оказывается внутри отсекателя) и внешний (оставшаяся часть))
- Удаление многугольников внутреннего списка, которые экранируются отсекателем
- Если глубина многоугольника из внутреннего списка больше, чем Zmin отсекателя, то такой многоугольник частично экранирует отсекатель. Нужно рекурсивно разделить плоскость, используя многоугольник, нарушивший порядок в качестве отсекателя (нужно использовать копию исходного, а не остаток после предыдущего отсечения). Отсечению подлежат все многоугольники из внутреннего списка
- По окончанию отсечения или рекурсивного разбиения изображаются многоугольники из внутреннего списка (те, которые остались после удаления всех экранируемых на каждом шаге многоугольников – остаются только отсекающие многоугольники)
- Работа продолжается с внешним списком (шаги 1-5)
Если многоугольники пересекаются, то для корректной работы данного алгоритма нужно плоскость одного разбить другой на две части.