Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kompyuternaya_grafika.doc
Скачиваний:
90
Добавлен:
23.04.2019
Размер:
5.45 Mб
Скачать

22. Алгоритм растровой развертки сплошных областей с затравкой.

Алгоритмы данной группы предполагают, что известен хотя бы один пиксел принадлежащий внутренней области окрашеваемого многоугольника. Существует множество различных видов областей, которые можно разделить на следующие группы:

1) по характеру границ:

- внутренне определенные;

- гранично определенные;

2) по характеру связности внутренних точек области:

- четырехсвязные;

- восьмисвязные.

Гранично определенные области, в отличие от внутренне определенных, имеют на границе области пиксели выделенного цвета (контур). Связность областей определяется количеством направлений перемещения внутри заполняемой области (рис.4.17).

Алгоритмы, ориентированные на заполнение восьмисвязных областей, способны заполнять любую четырехсвязную область, однако обратное не всегда верно.

Рассмотрим простейший вариант алгоритма, ориентированного на заполнение четырехсвязных областей. При работе алгоритма используется стек, хранящий затравочные пиксели. Для работы со стеком необходимы две процедуры -запись данных (координат пикселей) (PUSH) и чтение данных из стека (POP). В алгоритме последовательно проверяются и помещаются в стек пиксели четырехсвязной области. Алгоритм начинает работать с исходного затравочного пикселя (x0 ,y0), а четыре связанные с ним пикселя рассматриваются, начиная с правого от текущего, и далее против часовой стрелки.

Алгоритм представляет из себя итерационную процедуру, на каждом шаге которой происходит извлечение очередного затравочного пикселя из стека. Этот пиксель отображается, после чего в стек помещаются (при наличии) связанные с ним пиксели. В стек помещаются только те пиксели, которые не окрашивались на предыдущих шагах. Итерационный цикл завершается, когда стек оказывается пустым.

Рассмотрим работу данного алгоритма на примере.

Пусть задана область (см. рис.), имеющая границу определенного цвета, и известен пиксель внутри нее, который выбирается как затравочный.

Данный алгоритм легко модернизировать для восьмисвязных областей. Кроме того его можно оптимизировать, уменьшив объем стека, используемого в ходе закраски области. Следует отметить, что появление на приведенном рисунке в отдельных пикселях нескольких чисел, определяющих положение координат пикселя в стеке, свидетельствует о том, что происходит дублирование информации, т.е. один и тот же пиксель несколько раз помещается в стек. Это снижает эффективность алгоритма. Поэтому при написании программной реализации алгоритма с затравкой стараются исключить повторное занесение пикселя в стек. Данный алгоритм ориентирован на заполнение достаточно сложных областей четырех- или восьмисвязной конфигурации. Подобные области часто не могут быть заполнены при помощи алгоритмов построчной развертки. В этом плане они эффективнее. Однако, в связи с тем ,что в данной группе алгоритмов происходит попиксельная обработка, они значительно медленнее работают. Поэтому в плане производительности данная группа алгоритмов менее эффективна.

С целью соединить достоинства двух групп алгоритмов заполнения многоугольников разработана третья группа алгоритмов, которые называются алгоритмами построения развертки с затравкой. В алгоритмах данной группы осуществляется минимизация размеров стека за счет хранения одного затравочного пикселя для каждой строки развертки и заполнение каждой строки развертки влево и вправо от затравочного пикселя до достижения границ области.

При заполнении областей, имеющих сложные конфигурации, возникают проблемы при наличии разрывов в областях. В этом случае после проведения развертки текущей строки необходимо выполнить проверку заполненности всех пикселей предыдущей строки развертки.

Для реализации подобной проверки используются как точные алгоритмы, базирующиеся на графических моделях, так и эвристические,позволяющие с большой точностью выполнять закраску области сменьшими проверками за меньшее время.

Конец 22 вопроса.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]