Скачиваний:
84
Добавлен:
09.05.2014
Размер:
685 Кб
Скачать
☆

Простой алгоритм закраски с упорядоченным списком ребер.

Определить для каждого ребра МУ точки пересечения со сканирующими строками, проходящими через середины интервалов. Можно использовать алгоритм Брезенхэма.

  1. Горизонтальные ребра игнорируются.

  2. Занести каждое пересечение (Х+0,5) в список.

  1. Отсортировать список по строкам и по возрастанию Х в строке, то есть (Х1 Y1) предшествует (Х2 Y2), если Y1> Y2 или Y1= Y2 и Х1≤Х2.

  2. Преобразовать эти данные в растровую форму, для этого выделить из отсортированного списка пары элементов (Х1 Y1) и (Х2 Y2).

  3. Закрасить на сканирующей строке Y пиксели для целых значений Х, такие, что Х1≤Х+0,5≤ Х2.

Рассмотрим МУ:

Пересечение ребер со сканирующими строками:

Р1Р2 – игнорируем.

Р2Р3 : (8 ; 1,5), (8 ; 2,5), (8 ; 3,5), (8 ; 4,5), (8 ; 5,5).

Р3Р4 : (5,5 ; 3,5), (6,5 ; 4,5), (7,5 ; 5,5).

Р4Р5 : (4,5 ; 3,5), (3,5 ; 4,5), (2,5 ; 5,5), (1,5 ; 6,5).

Р5Р1 : (1; 1,5), (1; 2,5), (1; 3,5), (1; 4,5), (1; 5,5), (1; 6,5).

Весь список сортируется в порядке сканирования сначала сверху вниз, а затем слева направо:

(1; 6,5), (1,5 ; 6,5), (1; 5,5), (2,5 ; 5,5), (7,5 ; 5,5),

(8 ; 5,5), (1; 4,5), (3,5 ; 4,5), (6,5 ; 4,5), (8 ; 4,5),

(1; 3,5), (4,5 ; 3,5), (5,5 ; 3,5), (8 ; 3,5), (1; 2,5),

(8 ; 2,5), (1; 1,5), (8 ; 1,5).

Выделяем из списка пары пересечений:

(1; 6,5) - (1,5 ; 6,5), (1; 5,5) - (2,5 ; 5,5), (7,5 ; 5,5) - (8 ; 5,5), (1; 4,5) - (3,5 ; 4,5), (6,5 ; 4,5) - (8 ; 4,5),

(1; 3,5) - (4,5 ; 3,5), (5,5 ; 3,5) - (8 ; 3,5), (1; 2,5) - (8 ; 2,5), (1; 1,5) - (8 ; 1,5).

Применяем алгоритм закраски пикселей, описанный выше:

Список закрашиваемых пикселей:

(1; 6).

(1; 5), (2; 5), (7; 5).

(1; 4), (2; 4), (3; 4), (6; 4), (7; 4).

(1; 3), (2; 3), (3; 3), (4; 3), (5; 3), (6; 3), (7; 3).

(1; 2), (2; 2), (3; 2), (4; 2), (5; 2), (6; 2), (7; 2).

(1; 1), (2; 1), (3; 1), (4; 1), (5; 1), (6; 1), (7; 1).

Результат:

Замечание:Для каждого ребра МУ точки пересечения со сканирующими строками, могут проходить не только через середины интервалов (например: Х=0,8).

Главный недостаток простого алгоритма с упорядоченным списком ребер – необходимость сортирования большого списка.

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

Для каждой сканирующей строки, пересекающей ребро в (Х1 Y1), перекрасить все пиксели, у которых центр лежит справа от (Х1 Y1), то есть для Х+0,5> Х1.

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

Недостаток алгоритма заполнения по ребрам – многие пиксели пересекаются по несколько раз.

Для уменьшения количества пикселей можно ввести так называемую перегородку. Ее обычно проводят через одну из вершин МУ.

10.11.02

Лекция 9.

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

Д

ля каждой сканирующей строки, пересекающей ребро МУ:

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

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

(Используется соглашение о середине интервала между сканирующими строками).

Недостаток: многократное перекрашивание пикселей.

Соседние файлы в папке конспект лекций