
- •4. 3. Архитектура видеоадаптеров ega и vga
- •Монитор
- •Видеопамять
- •Текстовый режим
- •Знакогенератор
- •Атрибуты символов
- •Атрибуты символов (монохромный режим)
- •Видеопамять в графических режимах
- •Режимы 4 и 5
- •Режим 6
- •Режимы 0Dh и 0Eh
- •Режим 0Fh
- •Режим 10h
- •Режим 11h
- •Режим 12h
- •Режим 13h
- •5. 7. Видеоадаптеры svga
- •Видеопамять svga
- •Слоеный пирог
- •Увидеть весь мир через замочную скважину
- •Больше цветов больше бит
- •Стандарт vesa
- •6. 11.1. Введение
- •11.2. Преобразование отрезков из векторной формы в растровую
- •Простейший пошаговый алгоритм
- •Алгоритм Брезенхэма для отрезков прямых
- •11.3. Растровая развертка литер
- •Пропорциональное размещение литер. Нижние выносные элементы
- •17,18 Введение в модели закрашивания
- •Геометрические составляющие для нахождения отраженного света.
- •Вычисление диффузионной составляющей
- •Зеркальное отражение
- •Фоновые источники и фоновые отражения
- •Комбинирование компонентов освещения
- •Добавление цвета
- •[Править] Описание алгоритма
- •0.6.1 Двумерный алгоритм Коэна-Сазерленда
- •[Править] Достоинства
- •[Править] Недостатки
- •О трассировке лучей
- •Матрицы и вектора
- •Обратная трассировка лучей Определение цвета точки. Текстурные карты и свойства материалов
- •16 15. Цвет в компьютерной графике
- •Перспективная проекция
- •10 Лекции по компьютерной графике
- •3.1. Координаты и преобразования
- •3.3. Преобразование в однородную систему координат
- •Поворот вокруг фиксированной точки
- •[Править] Отличия от ega
- •[Править] Текстовые режимы
- •[Править] Графические режимы
- •[Править] Стандартные графические режимы
- •[Править] Нестандартные графические режимы (X-режимы)
Алгоритм Брезенхэма для отрезков прямых
Трудности применения процедуры LINE состоят в том, что округление у до целого значения требует времени и, кроме того, у и т должны быть вещественными переменными или двоичными дробями, но не целыми переменными, так как тангенс угла наклона есть дробь. Более привлекателен в этом отношении алгоритм Брезенхэма [58], поскольку для него необходима только целая арифметика. Вещественные переменные не используются совсем и, следовательно, округление не требуется. Для простоты будем считать, что тангенс угла наклона принимает значения в диапазоне 0-1. В алгоритме используется управляющая переменная di, которая на каждом шаге пропорциональна разности между s и t (рис. 11.2). На рис. 11.2 приведен i-й шаг, когда пэл Pi-1 уже найден как ближайший к реальному изображаемому отрезку, и теперь требуется определить, какой из пэлов должен быть установлен следующим: T или S;. Если s<t, то Si ближе к отрезку и необходимо выбрать
Рис
11.1.
Пошаговое
вычисление у,
при
котором выбор пэла (обозначаемого
черным
кружком)
осуществляется путем округления у.
Изображаемый отрезок проводится из точки (x1, y1) в точку (x2t y2). Пусть первый отрезок находится ближе к началу координат, тогда перенесем обе точки при помощи Т(-x1, -y1) так, чтобы начальной точкой отрезка стала точка (0, 0),
Рис. 11.2. Геометрическое обоснование алгоритма Брезенхэма. Черными кружками обозначены пэлы, выбранные с помощью этого алгоритма.
а конечной - (dx, dy), где dx-=x2—x1 и dy=y2—y1. Уравнение прямой теперь имеет вид y = (dy/dx)x. Обозначим координаты (после переноса) Рi-1 через (r, q), как показано на рис. 11.2. Тогда Si = (r+l, q) и Тi = (r+1, q+1).
Из рис. 11.2 следует, что
Поэтому
. (11.1)
Если s-t <0 выбираем Si. Преобразуя выражение (11.1), получаем
dx (s—t) = 2(r*dy—q*'dx) + -2dy - dx.
Величина dx положительна, поэтому dx(s—t)<0 можно использовать в качестве проверки при выборе Si. Обозначим часть неравенства через di . Тогда
.
Поскольку r=xi-1 и q=yi-1, то
Прибавляя 1 к каждому из индексов, имеем
Вычитая di из di+i, получаем
(11.2)
Известно, что xi - xi-1 = 1. Учитывая это, запишем
Если di >= 0, выбирается Ti, тогда yi=yi-1+1 и
Если же di < 0, выбирается Si, тогда yi=yi-1 и
Если di >= 0, выбирается Ti, тогда yi=yi-1+1 и
(11.3)
Если же di < 0, выбирается Si, тогда yi=yi-1 и
(11.4)
Таким образом, мы получили итеративный способ вычисления di+1 по предыдущему значению di и выбора между Si и Ti. Начальное значение di можно найти из выражения (11.2) при i = 1 с учетом того, что (х0, y0) = (0, 0). Тогда
(11.5)
Для вычисления по формулам (11.3) — (11.5) требуются минимальные арифметические возможности: они включают сложение, вычитание и сдвиг влево (для умножения на 2). Это важно, поскольку исключается длительная по времени операция умножения. Более того, как видно из следующей реализации алгоритма Брезенхэма (отметим, что эта версия работает только для отрезков, тангенсы углов наклона которых находятся в диапазоне 0 - 1; обобщение алгоритма предоставляем читателю выполнить в качестве упражнения), выполняемый в нем цикл очень прост: