
- •Виртуальные поверхности отображения Память буфера кадра.
- •Черно-белый буфер кадра (с одной битовой плоскостью)
- •Полутоновый чёрно-белый буфер кадра с n битовыми плоскостями.
- •Полутоновый чёрно-белый буфер кадра с n битовыми плоскостями и w-разрядной таблицей цветов.
- •Простой цветной буфер кадра.
- •Ц ветной буфер кадра с 24 битовыми плоскостями.
- •Цветной буфер кадра с 24 битовыми плоскостями и 10-разрядной таблицей цветов.
- •Работа буфера кадров в реальном времени
- •Алгоритмы растровой графики
- •Генерация векторов
- •Простой пошаговый алгоритм
- •Цифровой дифференциальный анализатор
- •Алгоритм Брезенхема
- •Алгоритм Брезенхема разложения в растр отрезка для первого октанта
- •Целочисленный алгоритм Брезенхема
- •Целочисленный алгоритм Брезенхема для первого октанта
- •Общий алгоритм Брезенхема
- •Обобщенный целочисленный алгоритм Брезенхема квадрантов
- •Улучшение качества аппроксимации векторов
- •Простой метод устранения лестничного эффекта
- •Растровая развертка в реальном времени Заполнение многоугольника в порядке сканирования строк
- •Тест принадлежности точки многоугольнику
- •Простейший алгоритм построчного сканирования.
- •Развертка с групповой сортировкой.
- •Простой алгоритм заполнения с завтравкой
- •Построчный алгоритм заполнения с затравкой
- •Основы методов устранения ступенчатости
- •Отсечение. Основные алгоритмы двумерного отсечения и их идеи
- •Простой алгоритм двумерного отсечения
- •Алгоритм отсечения Сазерленда-Коэна.
- •Последовательное осечение многоугольников. Алгоритм Сазермана - Ходтмена
- •Алгоритм разбиения средней точкой.
- •Трехмерное отсечение
- •Построение реалистических изображений
- •Простая модель освещения
- •Эмпирическая модель отражения Буи-Туонга Фонга
- •Представление цвета в машинной графике
- •Зрительная система человека
- •Сложение цветов
- •Свойства голубого , жёлтого и пурпурного цвета.
- •Вычитание цветов
- •Цветовая система cie xyz и диаграмма цветности cie
- •Цветовые модели cmy и cmyk
- •Цветовая модель hsv
- •Цветовые модели y**
- •Цветовые модели yuv, yPbPr и yCbCr
- •Цветовая модель yiq
- •Удаление скрытых линий и поверхностей Классификация методов удаления невидимых частей Алгоритмы удаления линий
- •Алгоритм удаления поверхностей с z-буфером
- •Построчный алгоритм с z-буфером
- •Алгоритм разбиения области Варнока
- •Построчный алгоритм Уоткинса
- •Алгоритм трассировки лучей
- •1. Понятие текстуры и текстурирования.
- •2. Виды текстурирования.
- •2.1. Точное текстурирование.
- •2.2. Аффинное текстурирование.
- •2.3. Перспективно-корректное текстурирование.
- •2.4. Параболическое текстурирование.
- •2.5. Билинейная фильтрация текстур.
- •2.6. Мипмэппинг.
- •3. Текстуры в OpenGl.
Алгоритм Брезенхема разложения в растр отрезка для первого октанта
(для первого октанта, т. е. для случая 0<=y<=x)
предполагается, что концы отрезка (х1, у1) и (х2, у2) не совпадают
Integer - функция преобразования в целое x, y, х, y - целые e – вещественное инициализация переменных: x=x1 y=y1 x=x2-x1 y=y2-y1 инициализация е с поправкой на половину пикселя: е = у/х - 1/2 начало основного цикла: for i=1 to x Plot (x,y) while (e>=0) у == у + 1 е= е – 1 end while х = х + 1 е = е + у/х next i finish |
Блок-схема алгоритма
|
На 0 to x. Активацию точки (0, 0) можно устранить, если поставить оператора Р1оt непосредственно перед строкой next i. |
Результат работы алгоритма Брезенхема в первом октанте. |
Целочисленный алгоритм Брезенхема
Алгоритм Брезенхема в том виде, как он представлен выше, требует использования арифметики с плавающей точкой и деления (для вычисления углового коэффициента и оценки ошибки). Быстродействие алгоритма можно увеличить, если использовать только целочисленную арифметику и исключить деление. Так как важен лишь знак ошибки, то простое преобразование
e'= 2ех
превратит предыдущий алгорим в целочисленный и позволит эффективно реализовать его на аппаратном или микропрограммном уровне. Модифицированный целочисленный алгоритм для первого октанта, т. е. для 0<=y<=x таков:
Целочисленный алгоритм Брезенхема для первого октанта
предполагается, что концы отрезка (х1, у1) и (х2, у2) не совпадают и все переменные - целые
х = х1
у=у1
х = у2 - х1
у = у2 - х1
инициализируем е' с поправкой на половину пиксела
e' = 2*y - x
начало основного цикла
for i = 1 to х
Plot (x,y)
while (e' > 0)
у = у + 1
e' = e' - 2 *x
end while
x = x + 1
e' = e' + 2 * у
next i
finish
Общий алгоритм Брезенхема
Чтобы реализация алгоритма Брезенхема была полной, необходимо обрабатывать отрезки во всех октантах. Модификацию легко сделать, учитывая в алгоритме номер квадранта, в котором лежит отрезок и его угловой коэффициент. Когда абсолютная величина углового коэффициента больше 1, у постоянно изменяется на единицу, а критерий ошибки Брезенхема используется для принятия решения об изменении величины х. Выбор постоянно изменяющейся (на +1 или -1) координаты зависит от квадранта.
Обобщенный целочисленный алгоритм Брезенхема квадрантов
Предполагается:
концы отрезка (х1, у1) и (х2, у2) не совпадают;
все переменные считаются целыми;
функция Sign возвращает -1,0, 1 для отрицательного, нулевого и положительного аргумента соответственно.
инициализация переменных: х=х1 у=у1 х = abs (х2 - х1) у = abs (у2 - у1) s1 = Sign (х2 - х1) s2 = Sign (у2 - у1) обмен значений х и у в зависимости от углового коэффициента наклона отрезка: if у > х then Врем = х х = у у = Врем Обмен =1 else Обмен = 0 end if |
Разбор случаев для обобщённого алгоритма Брезенхема. |
инициализация е' с поправкой на половину пиксела:
e' = 2 * у - х
основной цикл:
for i = 1 to х
Plot(x, у)
while (e' >= 0)
If Обмен = 1 then
x = x + s1
else
y = y + s2
end if
e' = e' - 2 * х
end while
If Обмен = l then
у = у + s2
else
x = x + s1
end if
e' = e' + 2* y
next i
finish