Алгоритм сканирующей прямой Уоткинса
Данный алгоритм оперирует в экранной плоскости. Изображение представляет собой набор многоугольников, являющихся ортогональными проекциями плоских граней трехмерных объектов. Для решения поставленной задачи (удаления невидимых линий и поверхностей) сцена последовательно рассекается плоскостями, перпендикулярными экрану (в терминах проекции эти секущие плоскости представляют собой так называемые сканирующие прямые). Таким образом, сканирующие прямые параллельны оси X (горизонтальны). Все сканирующие прямые обрабатываются алгоритмом одним способом, следовательно, достаточно рассмотреть одну такую прямую.
Алгоритм Уоткинса состоит из двух основных частей: нахождения так называемых пробных интервалов и определения видимости.
При нахождении пробных интервалов определяются отрезки сканирующей прямой, лежащие внутри одного из многоугольников. В результате каждому многоугольнику в экранной плоскости приписывается множество отрезков сканирующей прямой (это множество может быть и пустым).
Пример 1.7. Многоугольникам, изображенным на рис.1.67, приписываются следующие отрезки сканирующей прямой (здесь sij – отрезок номер j i-го многоугольника, образованный пересечением Fi с заданной сканирующей прямой): F1 приписаны s11 и s12; F2 приписан s21; F3 приписан s31.
Следует отметить, что изолированные (не перекрывающиеся в плоскости XY) отрезки видимы. Отрезки s21 и s31 перекрываются в плоскости XY. В этом случае необходимо сформировать пробные интервалы. Пробным интервалом будем называть отрезок сканирующей прямой, на котором видимость не изменяется. Для нахождения пробных интервалов необходимо рассмотреть проекции граней на плоскость XZ, поскольку только такая проекция позволит выяснить взаимное расположение граней в пространстве.
Пример 1.8. Рассмотрим проекции граней, изображенных на рис.1.68.
Здесь интервалы 1-8 являются пробными интервалами. Таким образом, пробный интервал – это часть сканирующей прямой, для которой справедливо: число отрезков, содержащих пробный интервал, постоянно и строго больше 1; проекции на плоскость XZ граней, соответствующих этим отрезкам, не пересекаются. Другими словами, внутри пробного интервала никакие два ребра проекций не пересекаются и никакие две грани не проникают друг в друга в объектном пространстве.
Вопрос о том, какой из сегментов проекций видим на пробном интервале, разрешается с помощью следующего теста: видим тот сегмент, минимальная z-координата которого в