2. Пересекаются ли ^-экстенты граней Р и Q (быстрый)?
3. Находится ли грань Р целиком на противоположной от наблюдателя (глаза) стороне плоскости грани Q (довольно быстрый)?
4. Находится ли грань Q целиком на той же стороне плоскости грани Р, что и глаз (довольно быстрый)?
5. Пересекаются ли проекции граней Р и Q на экране (дорогостоящий тест)?
Последний тест требует особенно больших вычислений. Вместо того чтобы просто проверить экстенты или положение вершин относительно плоскости, проводится полный тест «полигон относительно полигона» (в двух измерениях, то есть только с координатами х и у). Грани не пересекаются только тогда, когда ни одно ребро грани Р не пересекается ни с одним ребром грани Q и ни одна из этих граней не расположена внутри другой. Эти тесты более детально рассматриваются в тематическом задании 13.4.
Метод сортировки по глубине не требует ни дополнительной памяти для организации дерева, ни предварительного этапа (за исключением начальной сортировки по extent, far). Этот алгоритм может начинать рисовать грани, как только становится ясно, что грань Р, расположенная в конце списка, не заслоняет ни одной грани из списка. Однако в данном алгоритме по-прежнему производится разбиение
Удаление невидимых поверхностей
граней и добавление новых граней в список, поэтому f aces[] лучше реализовывать в виде связного списка (linked list), а не простого массива. Отметим, что данный метод не свободен, как и методы буфера глубины и BSP-дерева, от проблемы повторного рисования граней поверх уже нарисованных. В сущности, работа, потраченная на визуализацию нарисованных ранее граней, пропадает впустую.
13.4. HSR-метод построчного сканирования В этом разделе мы рассмотрим метод точности по изображению, при котором сцена визуализируется построчно - по строкам развертки. Вдоль каждой строки развертки рассматриваются все грани сцены, которые «попадают» на эту строку развертки, и определяется, какая грань ближе всего к глазу. Затем пикселы закрашиваются цветом этой грани. Таким образом, данный метод производит вычисления закраски для каждого пиксела только один раз, повторное рисование исключается.