Лекция: Алгоритм, использующий список приоритетов.

Начало данного алгоритма – алгоритм художника.

Основная схема алгоритма:

1. для каждого полигона сцены ищем zmin и zmax

2. сортируем все полигоны в порядке возрастания zmin

3. назовем самый первый левый полигон P, следующий – Q

4.

если <, то P и Q не перекрываются, выводим в растр P.

 

 

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

Если в любом тесте будет дан ответ да, P выводим в растр.

Тесты:

1. верно ли, что габариты P и Q не пересекаются по оси x

2. верно ли, что габариты P и Q не пересекаются по оси y

3.

 

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

 

4.

верно ли, что полигон Q лежит целиком до плоскости, в которой лежит P

для выполнения 3, 4 теста необходимо воспользоваться тестовой функцией плоскости.

Пусть плоскость задана уравнением вида

Ax +By+Cz+D=0

T= Ax +By+Cz+D, подставляем координаты точки, если T>=0, то точка за плоскостью, иначе перед ней.

5. верно ли, что проекции полигонов P и Q не пересекаются

 

Если ни один из тестов не дает ответ “да”, то меняют местами в списке P и Q. После этого выполняют 5 тестов. Иногда это помогает. Если в этом случае не помогло, то произошло зацикливание. В этом случае P разбивает Q на 2 части P1 и P2. После разбиения переходим к первому пункту алгоритма.

Для повышения эффективности данного алгоритма необходимо предварительно убирать нелицевые полигоны.

 

еще рефераты
Еще работы по информатике