- •Физические основы цвета и восприятие его человеком.
- •Удаление невидимх граней алгоритмом z-буфера.
- •Кодирование цветов в вычислительной технике.
- •Виды кг
- •Растровая графика. Базовые алгоритмы построения отрезка
- •Методы приоритетов
- •Алгоритм Брезенхейма для построения отрезка.
- •Кривая Безье
- •А лгоритмы закраски области заданным цветом. Простой алгоритм с упорядоченным списком ребер
- •Алгоритмы заполнения с затравкой
- •Методы построчного сканирования для криволинейных поверхностей
- •Алгоритмы Варнака и Робертса
- •Алгоритм Аппеля (метод трассировки лучей)
- •Однородные координаты. Геометрическая интерпретация
- •Виды проецирования.
- •Двумерное отсечение. Простой алгоритм определения видимости.
- •Двумерное параметрическое отсечение. Отсечение средней точкой
- •Двумерный алгоритм Лианга-Барски
- •Алгоритм Кируса-Бека
- •Зеркальное отражение. Закраска методом Гуро.
- •Зеркальное отражение. Закраска методом Фонга
- •Текстурирование.
- •Свето-теневой анализ. Метод излучательности
- •Отображения в окне. Виды координат
- •Растровая развертка. Алгоритмы отрезков и сплошных областей
- •Трехмерное отсечение. Обобщение
- •Алгоритм Плавающего горизонта
- •Алгоритм Вейлера-Азертона
- •Прозрачность. Свето-теневой анализ
Кривая Безье
Для описания сложных плавных кривых используются сплайн функции. Основные преимущества:
Простота задания формул
Функции дважды непрерывно дифференцируема
Плавное изменение кривизны при достаточно большой точности прохождении между двумя соседними точками.
Легкость построения кривых состоящих из отдельных кусков. При этом функция остается непрерывной
Наиболее часто используется интерполяционный кубический сплайн. По определению это функция, отвечающая следующим условиям:
график функции проходит через каждую точку заданного массива S(xi)=yi; i=0,1..m
на каждом из отрезков функция является многочленом третей степени
На всем отрезке функция имеет непрерывную вторую производную
Параметрическое уравнение кривой где 0<t<1
В векторной форме получим r(t)=(x(t),y(t),z(t)). Пусть на плоскости задан упорядоченный набор точек заданных векторами V={V0, V1,… Vm}. Ломанная, состоящая из этих точек, называется контрольной.
Одним из слайнов является кривая Безье. Кривой Безье называется кривая определенная векторным уравнением:
, где коэффициент в разложении бинома Ньютона
Кривая Безье целиком лежит в выпуклой оболочке ограниченной заданными точками исходя из свойств коэффициентов разложения бинома Ньютона(неотрицательны, сумма =0). При m=3 получаем кубическую кривую Безье определяемую четверкой точек и описываемую уравнением: r(t)=(((1-t)V0+3tV1)(1-t)+3t2V2)(1-t)+t3V3 , 0<t<1
А лгоритмы закраски области заданным цветом. Простой алгоритм с упорядоченным списком ребер
Наиболее распространенный алгоритм заливки произвольного многоугольника называется алгоритм построчного заполнения с упорядоченным списком ребер. Он основан на том, что соседние пиксели в строке, скорее всего, одинаковы и меняются только там где строка пересекается с ребром многоугольника. Это называется когерентностью растровых строк. При этом достаточно определить X-координаты пересечений строк сканирования с ребрами. Пары отсортированных точек пересечения задают интервалы заливки
Кроме того, если какие-либо ребра пересекались i-й строкой, то они, скорее всего, будут пересекаться также и строкой i+1. Это называется когерентностью ребер. При переходе к новой строке легко вычислить новую X-координату точки пересечения ребра, используя X-координату старой точки пересечения. Смена же количества интервалов заливки происходит только тогда, когда в строке сканирования появляется вершина.
Учет когерентности строк и ребер позволяет построить для заполнения многоугольников высокоэффективные алгоритмы построчного сканирования. Для каждой строки сканирования рассматриваются только те ребра, которые пересекают строку. Они задаются списком активных ребер (AET Active Edge Table). Для каждой пары из AET вычисляются координаты Х для У текущей строки сканирования. При появлении в строке сканирования вершин производится перестройка AET. Ребра, которые перестали пересекаться, удаляются из AET, а все новые ребра, пересекаемые строкой, заносятся в него с сортировкой по Х координате.
Общая схема алгоритма, динамически формирующего список активных ребер и заполняющего многоугольник снизу-вверх, следующая
Подготовить служебные целочисленные массивы Y-координат вершин и номеров вершин.
Совместно отсортировать Y-координаты по возрастанию и массив номеров вершин для того, чтобы можно было определить исходный номер вершины.
Определить пределы заполнения по оси Y - Y_мin и Y_max. Стартуя с текущим значением Y_tek = Y_min, исполнять пункты 4-9 до завершения раскраски.
Определить число вершин, расположенных на строке Y_tek - текущей строке сканирования.
Если вершины есть, то для каждой из вершин дополнить список активных ребер, используя информацию о соседних вершинах. Для каждого ребра в список активных ребер заносятся:
приращение X-координаты при увеличении Y на 1,
максимальное значение Y-координаты ребра,
начальное значение X-координаты.
Если обнаруживаются горизонтальные ребра, то они просто закрашиваются и информация о них в список активных ребер не заносится. Если после этого обнаруживается, что список активных ребер пуст, то заполнение закончено.
По списку активных ребер определяется Y_след - Y-координата ближайшей по вертикали вершины. (Вплоть до Y_след можно не заботиться о модификации AET а только менять X-координаты пересечений строки сканирования с активными ребрами).
В цикле от Y_tek до Y_след:
выбрать из списка активных ребер и отсортировать X-координаты пересечений активных ребер со строкой сканирования;
определить интервалы и выполнить закраску;
перевычислить координаты пересечений для следующей строки сканирования.
Проверить, не достигли ли максимальной Y-координаты. Если достигли, то заливка закончена.
Удалить из списка активных ребер те что закончились на строке Y_след и перейти к пункту 4