На этом шаге мы рассмотрим организацию различных выдов заливки.
При выводе фигур могут использоваться различные стили заполнения. Для обозначения стилей заполнения, отличных от сплошного стиля, используют такие понятия, как кисть и текстура. Их можно считать синонимами, однако понятие текстуры обычно используется применительно к трехмерным объектам, а кисть - для изображения двумерных объектов. Текстура - это стиль заполнения, закрашивание, которое имитирует сложную рельефную объемную поверхность, выполненную из какого-то материала.
Для описания алгоритмов заполнения фигур с определенным стилем используем тот же способ, что и для описания алгоритмов рисования линий. Описание всех разновидностей подобных алгоритмов можно дать с помощью такой обобщенной схемы:
. . . . Вывод пикселя заполнения цвета С с координатами (х, у) . . . .
Например, в алгоритме вывода полигонов пиксели заполнения рисуются в теле цикла горизонталей, а все другие операции предназначены для подсчета координат (x, у) этих пикселей. Сплошное заполнение означает, что цвет (С) всех пикселей одинаков, то есть C=const. Нам нужно как-то изменять цвет пикселей заполнения, чтобы получить определенный узор. Преобразуем алгоритм заполнения следующим образом:
. . . . C = f(x, y) Вывод пикселя заполнения цвета С с координатами (х, у) . . . .
Функция f(x,y) будет определять стиль заполнения. Аргументами функции цвета являются координаты текущего пикселя заполнения. Однако в отдельных случаях эти аргументы не нужны. Например, если цвет С вычислять как случайное значение в определенных границах: С = random (), то можно создать иллюзию шершавой матовой поверхности (рисунок 1).
Рис.1. Матовая поверхность
Другой стиль заполнения - штриховой (рисунок 2).
Рис.2. Штриховка
Для него функцию цвета также можно записать в аналитической форме:
где S - период, а Т - толщина штрихов, Сш - цвет штрихов, Сф - цвет фона.Если не рисовать пиксели фона, то можно создать иллюзию полупрозрачной фигуры. Подобную функцию можно записать и для других типов штриховки. Аналитическая форма описания стиля заполнение позволяет достаточно просто изменять размеры штрихов при изменениях масштаба показа, например, для обеспечения режима WYSIWYG.
На следующем шаге мы продолжим изучение этого вопроса.