- •Введение
- •1. Машинная графика и обработка изображения с помощью эвм
- •2. Типы графических устройств
- •2.1. Графические дисплеи на запоминающей трубке
- •2.2. Векторные графические дисплеи с регенерацией изображения
- •2.3. Растровые графические дисплеи с регенерацией изображения
- •2.4. Диалоговые устройства
- •3. Основы растровой графики
- •3.1. Алгоритмы вычерчивания отрезков
- •3.2. Цифровой дифференциальный анализатор
- •3.3. Алгоритм Брезенхема
- •3.4. Целочисленный алгоритм Брезенхема
- •3.5. Общий алгоритм Брезенхема
- •3.6. Алгоритм Брезенхема для генерации окружности
- •4. Растровая развертка изображения
- •4.1. Растровая развертка в реальном времени
- •4.2. Групповое кодирование
- •4.3. Клеточное кодирование
- •4.4. Буферы кадра
- •4.5. Изображение отрезков
- •4.6. Изображение литер
- •4.7. Растровая развертка сплошных областей и заполнение многоугольников
- •1 X 8 – внутри многоугольника;
- •1 Х 4 – внутри многоугольника;
- •6 Х 8 – внутри многоугольника;
- •4.8. Простой алгоритм с упорядоченным списком ребер
- •4.9. Алгоритм заполнения по ребрам
- •4.10. Алгоритм со списком ребер и флагом
- •4.11. Алгоритм заполнения с затравкой
- •4.12. Построчный алгоритм заполнения с затравкой
- •4.13. Основные методы устранения ступенчатости
- •4.14. Аппроксимация полутонами
- •5. Отсечение
- •5.1. Двумерное отсечение
- •5.2. Алгоритм отсечения Сазерленда-Коэна
- •5.3. Алгоритм разбиения средней точкой
- •5.4. Обобщение: отсечение двумерного отрезка выпуклым окном
- •5.5. Алгоритм Кируса–Бека
- •5.6. Внутреннее и внешнее отсечение
- •5.7. Определение факта выпуклости многоугольника
- •5.8. Разбиение невыпуклых многоугольников
- •5.9. Трехмерное отсечение
- •5.10. Определение выпуклости трехмерного тела
- •5.11. Отсечение невыпуклых тел
- •5.12. Отсечение многоугольников
- •5.13. Последовательное отсечение многоугольника – алгоритм Сазерленда – Ходжмена
- •5.14. Невыпуклые отсекающие области – алгоритм
- •5.15. Литеры
- •6. Удаление невидимых линий и поверхностей
- •6.1. Алгоритм плавающего горизонта
- •6.2. Алгоритм Робертса
- •6.3. Алгоритм Варнока
- •6.4. Алгоритм Вейлера–Азертона
- •6.5. Алгоритм, использующий z-буфер
- •6.6. Алгоритмы, использующие список приоритетов
- •6.7. Алгоритм построчного сканирования
- •6.8. Алгоритм построчного сканирования, использующий
- •Библиографический список рекомендуемой литературы
- •Оглавление
- •1. Машинная графика и обработка изображения с помощью эвм….……..3
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. Простой алгоритм с упорядоченным списком ребер
Используя описанные выше методы, можно разработать эффективные алгоритмы растровой развёртки сплошных областей, называемые алгоритмами с упорядоченным списком ребер.
Простой алгоритм с упорядоченным списком ребер:
-
подготовить данные:
-
определить для каждого ребра многоугольника точки пересечения со сканирующими строками, проведенными через середины интервала, (можно использовать алгоритм Брезенхема или ЦДА); горизонтальные ребра игнорируются;
-
занести каждое пересечение (X,Y+1/2) в список. Отсортировать список по строкам и по возрастанию X в строке; т.е. X1, Y1 предшествуют X2, Y2, если Y1 > Y2 или Y1 = Y2 и X1 X2;
-
преобразовать эти данные в растровую форму:
-
выделить из отсортированного списка пары элементов (X1, Y1 ) и (X2, Y2); структура списка гарантирует, что Y = Y1 = Y2 и X1 < X2;
-
активизировать на сканирующей строке Y пиксели для целых значений X, таких, что X1 X +1/2 X2.