- •Закраска. (Растровая развертка сплошных областей (ррсо)).
- •Заполнение многоугольников.
- •Простой алгоритм закраски с упорядоченным списком ребер.
- •Алгоритм заполнения по ребрам.
- •Алгоритм заполнения по ребрам с перегородкой.
- •Алгоритм со списком ребер и флагом.
- •Алгоритмы заполнения (закраски) с затравкой.
- •Простой алгоритм закраски с затравкой
- •Построчный алгоритм закраски с затравкой.
- •Отсечение.
- •Двух мерное отсечение.
- •2: Отрезок невидим.
- •3: Переходим к следующему отрезку. Метод Коэна – Сазерленда.
- •Непараметрический способ.
- •Метод предложен Сазерлендом и Спрулом: «Метод разбиения отрезка средней точкой».
- •Отсечение произвольным окном (выпуклым).
- •Отсечение параметрически заданного отрезка прямоугольным регулярным окном (частный случай нерегулярного).
- •Алгоритм Кируса – Бека.
- •Внутреннее и внешнее отсечение.
- •Определение факта выпуклости окна. Метод переносов и поворотов.
- •Разрезание невыпуклого окна.
- •Разбиение невыпуклых многоугольников.
- •Форматы графических файлов.
- •Истинно черно-белые изображения в градациях серого.
- •Цветовые плоскости изображения.
- •Гарантия точности соответствия цветов.
- •Колориметрические стандарты.
02.11.02
Лекция 8.
Закраска. (Растровая развертка сплошных областей (ррсо)).
Генерация сплошных областей из сплошных описаний ребер или вершин многоугольника (МУ) называется растровой разверткой сплошных областей, заполнением многоугольников или контуров.
Два подхода:
Растровая развертка.
Затравочное заполнение.
В методах растровой развертки в порядке сканирования строк пытаются определить, лежит ли точка внутри многоугольника или контура? При этом идут от верха многоугольника или контура вниз.
В методах затравочного заполнения (ЗЗ) предполагается, что известна некоторая точка (затравка) внутри замкнутого контура. Если соседние точки расположены не внутри – значит обнаружена граница контура. Если точка оказалась внутри контура, то она становится новой затравочной точкой и поиск продолжается рекурсивно.
Заполнение многоугольников.
Простейший метод – проверка на принадлежность внутренности МУ каждого пикселя в растре. Это расточительно, так как обычно большинство пикселей лежит вне МУ.
Вычисляем для МУ прямоугольную оболочку – наименьший многоугольник, содержащий внутри себя МУ.

Более эффективный метод использует тот факт, что соседние пиксели имеют одинаковые характеристики (кроме пикселей граничных ребер) – так называемая «пространственная принадлежность». Для растрового графического терминала соседние пиксели на одной сканирующей строке, вероятно, имеют одинаковые характеристики. Это когерентность растровых строк. Характеристики пикселей на данной строке изменяются только там, где ребро МУ пересекает строку. Эти пересечения делят сканирующую строку на области.

Сканирующая строка 2 делится на 3 области:
Х<1 – вне МУ.
1≤Х≤8 – внутри МУ.
Х>8 – вне МУ.
Сканирующая строка 4 делится на 5 областей:
Х<1 – вне МУ.
1≤Х≤4 – внутри МУ.
4<Х<6– вне МУ.
6≤Х≤8 – внутри МУ.
Х>8– вне МУ.
Не обязательно, чтобы точки пересечения для строки 4 сразу определялись в фиксированном порядке (слева направо). Например, при задании МУ списком вершин Р1-Р5Р1 или списком ребер – последовательными парами вершин Р1Р2 Р2Р3 Р3Р4 Р4Р5 Р5Р1 – для строки 4 точки пересечения с ребрами МУ: 8,6,4,1. Эти точки надо отсортировать в возрастающем порядке по Х: 1,4,6,8.
Для определения цвета пикселей на сканирующей строке рассматриваются пары отсортированных точек пересечений. Для каждого интервала, задаваемого парой пересечений, используется цвет заполняемого МУ. Для интервалов между парами пересечений и крайних от начала строки до первой точки пересечения и от последней точки пересечения до начала строки используется фоновый цвет. Таким образом для строки 4 в фоновый цвет устанавливаются пиксели: от 0 до 1, от 4 до 6, от 8 до 10, а пиксели о 1 до 4 и от 6 до 8 окрашены в цвет МУ.
Точное определение пикселей, которые должны закрашиваться в цвет МУ, требует некоторой осторожности:
П


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

