2.3.1. Многоугольники Отрезки и ломаные можно использовать для моделирования ребер более сложных объектов, но примитив типа замкнутая ломаная не имеет одного важного свойства - внутренней области. Подобным свойством в OpenGL обладают примитивы другого типа- многоугольники (polygon) (рис. 2.9). литя по форме замкнутая ломаная ничем не отличается от многоугольника с совпадающими вершинами, она не имеет внутренней области6. Многоугольники играют особую роль в компьютерной графике, поскольку в растровых системах изображение таких примитивов формируется очень быстро. С помощью многоугольников аппроксимируют криволинейные поверхности. Производительность графических систем принято сейчас оценивать в количестве многоугольников, выводимых на экран в течение одной секунды. Изображение прямоугольника на экране может выглядеть по-разному. Можно выводить только контур, заливать внутреннюю область одним цветом или заполнять определенным рисунком (образцом - pattern), причем в В дальнейшем мы не будем каждый раз оговаривать, что отрезок является прямолинейным. Только в случае, если рассматривается отрезок линии другого типа, например гиперболы или параболы, будет указываться тип линии. - Прим. ред.
'* Часто в литературе, особенно переводной, используется и термин полилиния, который является калькой с английского polyline. - Прим. перев.
АВ некоторых графических системах, в частности в GKS. вместо термина многоугольник используется термин заполняемая область (fill area).
2.3. Примитивы и атрибуты
залитом многоугольнике ребра можно и не отображать (рис. 2.10). Хотя контур многоугольника определяется очень легко упорядоченным списком его вершин, неправильное (неоднозначное) определение его внутренней области может привести к некорректному ее заполнению. Для корректного отображения внутренней области многоугольника он должен обладать тремя свойствами - быть простым, выпуклым и плоским.
Рис. 2.9. Примитивы, имеющие внутреннюю область
Рис. 2.10. Способы отображения многоугольников Если в двухмерном многоугольнике нет пересекающихся ребер, то он называется простым. Как видно на рис. 2.11, простой многоугольник имеет однозначно определенную внутреннюю область. Выяснить, является ли многоугольник простым, можно по положению его вершин, но алгоритм проверки потребует множества вычислений (см. упр. 2.14). Поэтому в большинстве графических API предполагается, что такая проверка выполняется в прикладной программе. Вопрос, как должна поступить графическая система в случае, если заданный для отображения многоугольник не является простым, будет рассмотрен в главе 7.