-
Notifications
You must be signed in to change notification settings - Fork 9
34. Алгоритм, использующий список приоритетов (алгоритм Художника)
Pandas edited this page May 30, 2017
·
1 revision
В основе алгоритма способ изображения сцены от дальних объектов к ближним.
Алгоритм
- Отсортировать многоугольники сцен в кадре в порядке возрастания Z
- Построить самый дальний многоугольник, если он не экранирует другие другие многоугольники (Zmax(A)<Zmin(B))
- Проверить, экранирует ли многоугольник P многоугольник Q при Zmax(P)>Zmin(Q). Если на
один из тестов даётся + ответ, P заносится в буфер кадра (P не экранирует Q). Если все -, то P и Q меняются местами, позиция Q помечается, тесты повторяются снова. Если вновь попытка менять местами, то P разрезается плоскостью, несущей Q, исходный многоугольник удаляется из списка, а его части заносятся в список. Тесты повторяются снова.
- верно ли, что прямоугольные объемлющие оболочки P и Q не перекрываются по X? по Y?
- верно ли, что P целиком лежит по ту сторону плоскости, несущей Q, которая расположена дальше от точки наблюдения
- верно ли, что Q целиком лежит по ту сторону плоскости, несущей P, которая расположена ближе к точке наблюдения
- верно ли, что проекции P и Q не перекрываются
Для 3,4 можно проверять функцией f=Ax+By+Cz+D, где A, B, C – коэффициенты пробной плоскости U. В f подставляются координаты вершин испытуемого многоугольника W. Если знаки f для вершин совпадают и + или =0, то W находится с дальней стороны от плоскости U. Если знаки совпадают и отрицательны или равны 0, то W расположен с ближней стороны от U.