Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции Компьютерная графика.doc
Скачиваний:
48
Добавлен:
10.12.2018
Размер:
572.93 Кб
Скачать

4.9. Алгоритм заполнения по ребрам

Алгоритм с упорядоченным списком ребер очень мощный. Каждый пиксель изображения активизируется только один раз, следовательно, минимизированы операции ввода-вывода. Главный недостаток алгоритма состоит в больших накладных расходах, связанных с поддержкой и сортировкой различных списков. В другом методе растровой развёртки сплошных областей большинство из этих списков устранено. Этот метод называется алгоритмом заполнения по ребрам.

Алгоритм заполнения по ребрам

Для каждой сканирующей строки, пересекающей ребро многоугольника в (X1, Y1), дополнить, т.е. активизировать, подсветить все пиксели, у которых центры лежат справа от (X1, Y1), т.е. для (X1,Y1), X+1/2>X1.

К каждому ребру алгоритм применяется индивидуально, причем, порядок обработки ребер многоугольника не важен.

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

Главный недостаток – для сложного изображения каждый пиксель может обрабатываться много раз. Следовательно, эффективность алгоритма ограничена скоростью ввода/вывода.

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

Алгоритм заполнения с перегородкой

Для каждой сканирующей строки, пересекающей ребро многоугольника:

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

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

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

4.10. Алгоритм со списком ребер и флагом

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

  1. обрисовка контура: используя соглашения о середине интервала между сканирующими строками для каждого ребра, пересекающего сканирующую строку, отметить самый левый пиксель, центр которого лежит справа от пересечения; т.е. X+1/2>Xпересечения;

  2. заполнение: для каждой сканирующей строки, пересекающей многоугольник:

Внутри = false

for X=0 (левая граница) to X=Xmax (правая граница)

if пиксель в точке X имеет граничное значение

then инвертировать значение переменной Внутри

if Внутри = true

then присвоить пикселю в X значение цвета многоугольника

else

присвоить пикселю в X значение цвета фона

end if

next X

В данном алгоритме каждый пиксель обрабатывается только один раз, так что затраты на ввод/вывод значительно меньше, чем в алгоритме со списком ребер или алгоритме с перегородкой.