Можно еще усовершенствовать алгоритм построчного сканирования, изменив, например, способ представления многоугольника. В результате придем к методу построчного сканирования, описанному в разделе 7.7.
Рис. 7.56. Структура данных, используемая при реализации у-х алгоритма
7.10. Растровое преобразование многоугольников
7.10.7. Особые случаи При распространении методов закраски внутренней области многоугольников на другие геометрические фигуры нужно не забывать о существовании особых случаев (см. упр. 7.17). Существенным преимуществом работы с многоугольниками является то, что положение их ребер точно известно. Но даже при работе с этими геометрическими фигурами могут возникнуть проблемы, если строка растра проходит через вершину. Рассмотрим два варианта такой ситуации (рис. 7.57). При использовании правила четности-нечетности эти два случая следует обрабатывать по-разному. В случае (а) точку пересечения строки с вершиной следует считать либо за нуль пересечений, либо за два пересечения. В случае (б) точка пересечения строки с вершиной должна учитываться в анализе четности-нечетности как одно пересечение.
Учесть эти особые случаи в алгоритме можно двумя способами. Первый вариант- при выявлении пересечения с вершиной анализировать, какая из двух описанных ситуаций имеет место, и соответственно модифицировать счетчик текущего количества пересечений. Другой вариант - обеспечить, чтобы значения координаты у вершин всегда были дробными. Тогда вершина многоугольника никогда не будет лежать на строке растра и особые ситуации просто не будут иметь места.
Рис. 7.57. Особые случаи"opengl5_351.html">⇐ Предыдущая| |Следующая ⇒