Skip to content

32. Алгоритм Вейлера Азертона удаления невидимых линий и поверхностей.

Pandas edited this page Jun 6, 2017 · 3 revisions

Алгоритм – попытка минимизировать количество шагов в алгоритме Варнока путём разбиения окна вдоль границ многоугольника.

Алгоритм

  1. Предварительная сортировка по глубине (для формирования списка приблизительных приоритетов)
  2. Отсечение по границам ближайшего к наблюдателю многоугольника, называемое сортировкой многоугольников на плоскости (в качестве отсекателя используется копия первого многоугольника из списка приблизельных приоритетов. отсекаться будут все многоугольники в этом списке, включая первый. формируется 2 списка – внутренний (для каждого отсекаемого многоугольника то часть, которая оказывается внутри отсекателя) и внешний (оставшаяся часть))
  3. Удаление многугольников внутреннего списка, которые экранируются отсекателем
  4. Если глубина многоугольника из внутреннего списка больше, чем Zmin отсекателя, то такой многоугольник частично экранирует отсекатель. Нужно рекурсивно разделить плоскость, используя многоугольник, нарушивший порядок в качестве отсекателя (нужно использовать копию исходного, а не остаток после предыдущего отсечения). Отсечению подлежат все многоугольники из внутреннего списка
  5. По окончанию отсечения или рекурсивного разбиения изображаются многоугольники из внутреннего списка (те, которые остались после удаления всех экранируемых на каждом шаге многоугольников – остаются только отсекающие многоугольники)
  6. Работа продолжается с внешним списком (шаги 1-5)

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

Imgur

Clone this wiki locally