Какие геометрические ограничения накладываются на полигон для гарантии его правильного закрашивания? Приведем несколько примеров полигонов, для которых данный метод работает, и несколько таких, с которыми он работать отказывается.
10.7.3. Алгоритм граничного закрашивания Метод граничного закрашивания (fence-fill method) полигональных областей использует понятие «дополнения» или «обращения» определенных пикселов изображения. Для двухуровневого дисплея значение пиксела, равное 1 (белый цвет), превращается в 0 (черный), и наоборот. Главное свойство дополнения заключается в том, что при повторном его применении восстанавливается исходное значение любого объекта, к которому эта операция была применена.
Дополнение работает следующим образом: создается вертикальная «граница» - возможно, она пройдет через вершину подлежащего закрашиванию полигона. Все пикселы устанавливаются в 0. Затем для каждого ребра полигона выполняется следующее: на каждой строке развертки, проходящей через это ребро, производится обращение всех пикселов от ребра до созданной нами границы. Те пикселы вдоль строки развертки, которые лежат вне полигона, обращаются четное число раз и поэтому остаются равными 0. Пикселы же, лежащие внутри полигона, обращаются нечетное число раз и поэтому равны 1 (закрашиваются). Результат не зависит от того, где именно пролегает граница.
Нарисуйте на бумаге несколько полигонов и примените для их заполнения вручную метод граничного закрашивания. Покажите, что данный метод работает для рисунка из нескольких полигонов и для полигонов с отверстиями. Что произойдет, если этот метод применить не к полигону, а к прямой с заданными понятиями «снаружи» и «внутри»?
10.8. Ступенчатость; технологии сглаживания Ранее нам уже встречалось понятие «ступенек». Ступеньки - это одна из форм дефектов изображения (aliasing), которые являются неотъемлемым свойством растровых дисплеев. Ступенчатость возникает из-за дискретной природы пикселов; это означает, что пикселы появляются на дисплее в виде фиксированного прямоугольного массива. На рис. 10.37, а ступенчатость показана на примере черного прямоугольника. Если такой прямоугольник охватывает большое количество пикселов, то его граница будет выглядеть относительно гладкой, хотя и останутся некоторые неровности. Однако если он занимает лишь несколько пикселов, как на рис. 10.37, б, то «ступеньки» будут очень заметны и «режут глаз». На этом рисунке каждый пиксел, образующий прямоугольник, окрашивается в черный цвет в том случае, когда прямоугольник проходит через конкретную точку: центр этого пиксела. Фактически каждый пиксел «опрашивает» прямоугольник в единственной точке - в центре пиксела, выясняя: имеется ли прямоугольник в этой точке. В зависимости от ответа вся площадь пиксела окрашивается в белый или черный цвет.