- •Е. А. Снижко компьютерная геометрия и графика
- •Лекция 1 Введение в компьютерную графику Основные направления компьютерной графики
- •Деловая графика
- •Лекция 2 Виды компьютерной графики. Программные средства компьютерной графики Виды компьютерной графики
- •Классы программ для работы с растровой графикой
- •Средства создания и обработки векторных изображений
- •Связь между размером иллюстрации (в пикселах) и размером отпечатка (в мм) при разных разрешениях отпечатка
- •Понятие растра
- •Методы растрирования
- •О сновы теории цвета
- •Лекция 4 Цветовые модели и палитры. Цветовые профили Аддитивная цветовая модель rgb
- •Субтрактивная цветовая модель cmyk
- •Преобразование между моделями rgb и cmyk
- •Цветовая модель hsv
- •Другие цветовые модели
- •Цветовые профили
- •Лекция 5 Кодирование цвета. Палитра Кодирование цвета
- •Индексные палитры
- •Фиксированная палитра
- •Безопасная палитра
- •Лекция 6 Визуализация изображений. Основные понятия
- •Основные геометрические характеристики растра
- •Методы улучшения растровых изображений: антиэлайзинг и дизеринг
- •Лекция 7 Геометрическое моделирование. Системы координат. Аффинные преобразования Основные понятия геометрического моделирования
- •Системы координат
- •Аффинные преобразования
- •Л екция 8 Геометрические модели плоских объектов Основные понятия
- •Способы описания (модели) прямой линии
- •Взаимное расположение графических элементов на плоскости
- •Уравнения пучка прямых и биссектрисы угла
- •Лекция 9 Кривые 2-го порядка. Сплайны. Кривые Безье Кривые второго порядка
- •Сплайны. Кривые Безье
- •Тесты ориентации точки относительно полигона
- •Лекция 11 Базовые растровые алгоритмы Алгоритмы вывода прямой линии
- •Инкрементные алгоритмы
- •Алгоритм вывода окружности
- •Алгоритм вывода эллипса
- •Лекция 12 Алгоритмы закрашивания Задача графического вывода фигур
- •Алгоритмы закрашивания
- •Алгоритмы заполнения, использующие математическое описание контура
- •Лекция 13 Фрактальные алгоритмы Понятие фрактала
- •Алгоритмические фракталы
- •Геометрические фракталы
- •Площадные фракталы
- •Фракталы на основе метода ifs
- •Применение методов фрактальной графики
- •Лекция 14 Методы и алгоритмы трехмерной графики. Модели описания поверхностей
- •Аналитическая модель поверхности
- •Векторная полигональная модель
- •Воксельная модель
- •Равномерная сетка
- •Неравномерная сетка. Изолинии
- •Моделирование объектов в системах кг
- •Лекция 15 Визуализация трехмерных изображений Проецирование трехмерных объектов на картинную плоскость
- •Уровни визуализации
- •Каркасная визуализация
- •Показ с удалением невидимых точек. Классификация методов
- •Лекция 16 Методы Гуро и Фонга для закрашивания поверхностей. Методы прямой и обратной трассировки лучей Закрашивание поверхностей
- •Метод Гуро
- •Метод Фонга
- •Методы трассировки лучей
- •Лекция 17 Формирование изображений средствами современных видеосистем. Графические интерфейсы и стандарты программирования графики Принципы формирования изображения на экране
- •Вертикальная развертка и двойная буферизация
- •Архитектура современных видеосистем
- •Современные стандарты и интерфейсы программирования компьютерной графики
- •Наиболее распространенные форматы графических файлов
- •Тексты программ для построения фрактальных изображений Программа для построения фрактала Мандельброта
- •Программа для построения фрактала Джулиа
- •Программа для построения фрактала Кох
- •Программа для построения ветки папоротника
- •Программа построения треугольника Серпинского
- •Библиографический список
- •Компьютерная геометрия и графика
- •190005, С.-Петербург, 1-я Красноармейская ул., д. 1
Инкрементные алгоритмы
Брезенхэм предложил подход, позволяющий разрабатывать так называемые инкрементные алгоритмы растеризации. Основной целью разработки таких алгоритмов было построение циклов вычисления координат на основе только целочисленных операций сложения/вычитания без использования умножения и деления. Уже известны инкрементные алгоритмы не только для отрезков прямых, но и для кривых линий.
Инкрементные алгоритмы выполняются как последовательное вычисление координат соседних пикселов путем добавления приращений координат. Приращения рассчитываются на основе анализа функции погрешности. В цикле выполняются только целочисленные операции сравнения и сложения/вычитания. Достигается повышение быстродействия для вычисления каждого пиксела по сравнению с прямым способом.
Один из вариантов алгоритма Брезенхэма ([12, с. 100-101]):
xerr:=0; yerr:=0;
dx:=x2-x1; dy:=y2-y1;
Если dx>0, то incX:=1;
dx=0, то incX:=0;
dx<0, то incX:=-1;
Если dy>0, то incY:=1;
dy=0, то incY:=0;
dy<0, то incY:=-1;
dx:=|dx|; dy:=|dy|;
Если dx>dy, то d:=dx иначе d:=dy;
x:=x1; y:=y1;
Закрасить пиксел с координатами (x, y);
Выполнить d раз цикл:
xerr:=xerr+dx;
yerr:=yerr+dy;
Если xerr>=d, то xerr:=xerr-d, x:=x+incX;
Если yerr>=d, то yerr:=yerr-d, y:=y+incY;
Закрасить пиксел с координатами (x, y).
Рассмотрим пример работы приведенного выше алгоритма Брезенхэма для отрезка (2;3) - (8;6). Этот алгоритм восьмисвязный, т.е. при вычислении приращений координат для перехода к соседнему пикселу возможны восемь случаев:
|
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|
i ncY=-1 |
|
3 |
|
|
|
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
incX=-1 |
incX=1 |
|
5 |
|
|
|
|
|
|
|
|||
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
incY=1 |
|
Известны также четырехсвязные алгоритмы. Они более просты, но генерируют менее качественное изображение линий за большее количество тактов работы. Для приведенного примера четырехсвязный алгоритм работает 10 тактов, а восьмисвязный - только 7:
|
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|
i ncY=-1 |
|
3 |
|
|
|
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
incX=-1 |
incX=1 |
|
5 |
|
|
|
|
|
|
|
|||
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
incY=1 |
|