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

1  X  8 – внутри многоугольника;

x > 8 – вне многоугольника.

Строка 4 делится на 5 областей:

х < 1 – вне многоугольника;

1  Х  4 – внутри многоугольника;

4 < х < 6 – вне многоугольника;

6  Х  8 – внутри многоугольника;

х > 8 – вне многоугольника.

П ри определении интенсивности, цвета и оттенка пикселов на сканирующей строке рассматриваются пары отсортированных точек пересечения. Для каждого интервала, задаваемого парой пересечений, используется интенсивность или цвет заполняемого многоугольника. Для каждого интервала между парами пересечений и крайних (от начала строки до первой точки пересечения и от последней точки пресечения до конца строки) используется фоновая интенсивность или цвет. На рис. 8 для строки 4 в фоновый цвет установлены пиксели: от 0 до 1, от 4 до 6, от 8 до 10, тогда как пиксели от 1 до 4 и от 5 до 8 окрашены в цвет многоугольника.

Точное определение тех пикселов, которые должны активизироваться, требует некоторой осторожности. Прямоугольник имеет координаты (1,1), (5,1), (5,4), (1,4). Сканирующие строки с 1 по 4 имеют пересечения с ребрами многоугольника при х=1 и 5. Вспомним, что пиксель адресуется координатами своего нижнего левого угла, значит, для каждой из этих сканирующих строк будут активированы пиксели с х-координатами 1; 2; 3; 4; 5. На рис. 8,а показан результат. Заметим, что площадь, покрываемая активированными пикселями, равна 20, в то время как настоящая площадь прямоугольника равна 12.

Модификация системы координат сканирующей строки и теста активации устраняет это проблему, как это показано на рис.8,б. Считается, что сканирующие строки проходят через центр строк пикселов, т.е. через середину интервала. Тест активизации модифицируется следующим образом: проверяется, лежит ли внутри интервала центр пикселя, расположенного справа от пересечения. Однако пиксели все еще адресуются координатами левого нижнего угла, как показано на рисунке. Результат данного метода корректен.

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

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

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

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

  1. подготовить данные:

  • определить для каждого ребра многоугольника точки пересечения со сканирующими строками, проведенными через середины интервала, (можно использовать алгоритм Брезенхема или ЦДА); горизонтальные ребра игнорируются;

  • занести каждое пересечение (X,Y+1/2) в список. Отсортировать список по строкам и по возрастанию X в строке; т.е. X1, Y1 предшествуют X2, Y2, если Y1 > Y2 или Y1 = Y2 и X1  X2;

  1. преобразовать эти данные в растровую форму:

  • выделить из отсортированного списка пары элементов (X1, Y1 ) и (X2, Y2); структура списка гарантирует, что Y = Y1 = Y2 и X1 < X2;

  • активизировать на сканирующей строке Y пиксели для целых значений X, таких, что X1  X +1/2  X2.