
- •1 Аксонометрические проекции. Изометрия, диметрия, триметрия
- •2 Алгоритмы разложения в растр отрезка прямой линии и окружности
- •4 Использование методов порталов и иерархических подсцен при создании виртуальной реальности. Метод порталов
- •5 Классификация цветовых моделей и форматов компьютерной графики
- •6 Колориметрия. Цветовые модели, смешение цветов и законы Гроссмана
- •7 Математическая модель и виды перспективного проецирования
- •8 Методы геометрического моделирования
- •9 Моделирование кривых и поверхностей в форме Безье
- •10 Моделирование кривых и поверхностей в форме Эрмита
- •11. Моделирование прозрачности и теней при построении реалистических изображений
- •12. Моделирование трехмерных поверхностей порциями поверхностей Кунса
- •13 Моделирование фотореалистичных изображений при помощи метода излучательности
- •14. Построение реалистических изображений методом Торренсанса-Сперроу
- •15. Построение реалистичных изображений. Формула закраски
- •16. Преобразования на плоскости и в пространстве. Система однородных координат
- •17. Развертка сплошных областей. Алгоритмы построчной развертки и заполнения с затравкой.
- •18. Сплайновая модель пространственных кривых и поверхностей
- •19. Формирование изображений трехмерного пространства методом отсечения лучей.
- •20. Формирование изображений трехмерного пространства при помощи алгоритмов, основанных на построении bsp-деревьев
- •Алгоритмы двоичного разбиения пространства
- •21. Формирование окраски методом Гуро
- •22. Формирование окраски методом Фонга
- •23. Формирование реалистических изображений методом трассировки лучей
- •24. Цветовые модели, ориентированные на аппаратуру и восприятие человеком
- •2. Аппаратно-ориентированные модели
- •2. Модели ориентированные на человека
- •25. Цветовые форматы и стандарты мко
17. Развертка сплошных областей. Алгоритмы построчной развертки и заполнения с затравкой.
Заполнение сплошных областей
Построение сплошной области в растровой сетке монитора на практике сводится к заполнению многоугольников, так как при наличии растра любую фигуру можно аппроксимировать при помощи многоугольника с достаточным числом граней. Все множество методов заполнения многоугольников делят на:
1) построчные методы растровой развертки;
2) методы растровой развертки с затравочным заполнением.
Построчный метод растровой развертки базируется на процедуре, выполняющей последовательное сканирование растровых строк с проверкой принадлежности каждой точки растровой развертки замкнутому контуру. Подобные методы могут быть использованы как для растровых, так и для векторных дисплеев.
Методы, базирующиеся на затравочном заполнении за начало процедуры обработки области принимают произвольную точку, лежащую внутри этой области. Начиная с этой точки, происходит рекурсивное заполнение области, заданным цветом. Алгоритмы данной группы методов могут быть реальны только на растровых дисплеях.
Построчная растровая развертка областей
Задача, определяющая принадлежности точки замкнутому контуру, в общем случае является очень трудоемкой задачей, поэтому для уменьшения вычислительных затрат при обработке подобного контура рассматривается не вся рабочая поверхность экрана, а его ограниченная часть, называющаяся охватывающим прямоугольником.
Координаты углов охватывающего прямоугольника определяются максимальными и минимальными значениями координат X и Y рассматриваемого контура.
Для того чтобы эффективно реализовать процедуру развертки сплошной области, необходимо воспользоваться двумя дополнительными процедурами:
1) определение когерентности растровых строк;
2) сортировка.
Под когерентностью - пространственная однородность характеристик пиксела в сканируемой строке. Изменение характеристик пиксела свидетельствует о достижении границы контура.
Как правило, на практике описание ломаной линии контура хранится в неупорядоченном виде. Если многоугольник задан ребрами, то точки пересечений строки растровой развертки будут располагаться не упорядоченно. Чтобы получить координаты интервала заполнения строки в растре развертки, необходимо выполнить сортировку множества точек пересечения < x1, x2, x3, x4 >.
Таким образом, алгоритм выполнения сортировки - неотъемл часть ядра базовой графической сист.
При выполнении построения растровой развертки особой обработки требуют вершины многоугольного контура. Возможны два случая:
1) в том случае, если вершина контура является локальным экстремумом, то она учитывается в списке два раза (например, P5);
2) в противном случае, она учитывается один раз (например, P3).
Для повышения эффективности вычислительной процедуры сортировки по строкам и сортировки в строке выполняются раздельно.
Простейшим вариантом алгоритма данной группы является алгоритм с упорядоченным списком ребер. Он состоит из двух частей:
1) подготовительная;
2) собственно развертка.
Данный алгоритм является простым и очевидным, однако требует большого объема памяти. Для ускорения вычисления и уменьшения объема памяти используется:
1) структурирование данных в виде связного списка ребер;
2) вычисление координат точек пересечения в пошаговом режиме.
На использовании данных приемов базируется вариант алгоритма растровой развертки сплошных областей - алгоритм с активным списком ребер: (САК). Алгоритм также состоит из двух частей: подготовительной и растровой развертки.
Алгоритм, использующий САК, независим от устройств ввода – вывода, однако имеет повышенную сложность из-за использования в нем списочных структур и их обработки. Кроме того, наличие такой гибкой структуры данных, как списки, не позволяет выполнять аппаратную реализацию алгоритма со списком активных ребер. Для повышения эффективности алгоритма используется модернизированный вариант, в котором кроме САК используется признак переключения “вне внутри” замкнутого контура (сокращенно ФЛАГ). Алгоритм также выполняется за 2 этапа:
1. Обрисовка контура.
2. Заполнение внутреннего пространства контура.
Алгоритмы заполнения сплошных областей с затравкой
Алгоритмы данной группы предполагают, что известен хотя бы один пиксел принадлежащий внутренней области окрашиваемого многоугольника. Существует множество различных видов областей, которые можно разделить на следующие группы:
1) по характеру границ:
- внутренне определенные;
- гранично определенные;
2) по характеру связности внутренних точек области:
- четырехсвязные;
- восьмисвязные.
Граничноопределенные области, в отличие от внутренне определенных, имеют на границе области пиксели выделенного цвета (контур). Связность областей определяется количеством направлений перемещения внутри заполняемой области (4 или 8).
При написании программной реализации алгоритма с затравкой стараются исключить повторное занесение пикселя в стек. Данный алгоритм ориентирован на заполнение достаточно сложных областей четырех- или восьмисвязной конфигурации. Подобные области часто не могут быть заполнены при помощи алгоритмов построчной развертки. В этом плане они эффективнее. Однако, в связи с тем, что в данной группе алгоритмов происходит попиксельная обработка, они значительно медленнее работают. С целью соединить достоинства двух групп алгоритмов заполнения многоугольников разработана третья группа алгоритмов, которые называются алгоритмами построения развертки с затравкой. В алгоритмах данной группы осуществляется минимизация размеров стека за счет хранения одного затравочного пикселя для каждой строки развертки и заполнение каждой строки развертки влево и вправо от затравочного пикселя до достижения границ области. При заполнении областей, имеющих сложные конфигурации, возникают проблемы при наличии разрывов в областях. В этом случае после проведения развертки текущей строки необходимо выполнить проверку заполненности всех пикселей предыдущей строки развертки. Для проверки используются точные либо эвристические алгоритмы.