
- •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-режимы)
Добавление цвета
Нетрудно расширить рассматриваемую модель закраски на случай отражения цветного освещения от цветных поверхностей. Вновь более общая модель является аппроксимацией, порожденной стремлением к простоте, однако она дает приемлемые результаты и вполне работоспособна.
В главе 12 содержится более детальное рассмотрение природы цвета, однако, как мы уже видели ранее, свет любого цвета может быть синтезирован путем сложения определенных количеств красного, зеленого и синего цветов. При работе с цветными источниками и цветными поверхностями мы вычисляем каждый компонент цвета отдельно и затем просто складываем их, чтобы окончательный цвет отраженного света. Тогда для вычисления красного, зеленого и синего компонентов отраженного света необходимо трижды применить уравнение (8.5):
(8.7)
(Величины lambert и phong заданы уравнением (8.6).)
Отметим, что мы предполагаем наличие у источника света трех <<типов>> цвета:
ambient=(
)(фоновый),
diffuse=(
)(диффузный),
specular=(
)(зеркальный).
Обычно цвета диффузного и зеркального освещения одинаковы. Кроме того, отметим, что переменные lambert и phong не зависит от того, компонент какого цвета вычисляется, так что их нужно вычислить один раз. Развивая этот подход, следует определить девять коэффициентов отражения:
ambieht
reflection
coefficients:
( коэффициенты фонового отражения);
diffuse
reflection
coefficients:
( коэффициенты диффузного отражения);
specular
reflection coefficients:
(
коэффициенты
диффузного
отражения).
Коэффициенты фонового и диффузного отражения определяются цветом самой поверхности. Под <<цветом поверхности>> мы имеем в виду тот цвет, который отражается от нее при освещении ее белым светом. Поэтому поверхность является красной, если она выглядит красной при освещении ее белым цветом. Если же поверхность освещается каким-либо другим цветом, то она может продемонстрировать совершенно иной цвет. Приводимые ниже примеры иллюстрируют эту относительность цвета.
21 Алгоритм Коэна — Сазерленда (англ. Cohen-Sutherland) — алгоритм отсечения отрезков, то есть алгоритм, позволяющий определить часть отрезка, которая пересекает прямоугольник. Был разработан Дэном Коэном и Айвеном Сазерлендом в Гарварде в 1966—1968 гг., и опубликован на конференции AFIPS в 1968.[1][2]
Содержание [убрать]
|
[Править] Описание алгоритма
Алгоритм разделяет плоскость на 9 частей прямыми, которые образуют стороны прямоугольника. Каждой из 9 частей присваивается четырёхбитный код. Биты (от младшего до старшего) значат «левее», «правее», «ниже», «выше». Иными словами, у тех трёх частей плоскости, которые слева от прямоугольника, младший бит равен 1, и так далее.
Алгоритм определяет код конечных точек отрезка. Если оба кода равны нулю, то отрезок полностью находится в прямоугольнике. Если битовое И кодов не равно нулю, то отрезок не пересекает прямоугольник (т.к. это значит, что обе конечные точки отрезка находятся с одной стороны прямоугольника). В прочих случаях, алгоритм выбирает конечную точку, находящуюся вне прямоугольника, находит ближайшую к ней точку пересечения отрезка с одной из линий, образующей стороны прямоугольника, и использует эту точку пересечения как новую конечную точку отрезка. Укороченный отрезок снова пропускается через алгоритм.
Реализация алгоритма для трёхмерной модели идентична двумерной реализации, за исключением того, что вместо четырёхразрядного кода применяется шестиразрядный (дополнительные два бита глубины).
….
Алгоритмы взяты из прекрасной книги П.В.Вельтмандер "Машинная графика"
Если изображение выходит за пределы экрана, то на части дисплеев увеличивается время построения за счет того, что изображение строится в "уме". В некоторых дисплеях выход за пределы экрана приводит к искажению картины, так как координаты просто ограничиваются при достижении ими граничных значений, а не выполняется точный расчет координат пересечения (эффект "стягивания" изображения). Некоторые, в основном, простые дисплеи просто не допускают выхода за пределы экрана. Все это, особенно в связи с широким использованием технологии просмотра окнами, требует выполнения отсечения сцены по границам окна видимости.
В простых графических системах достаточно двумерного отсечения, в трехмерных пакетах используется трех и четырехмерное отсечение. Последнее выполняется в ранее рассмотренных однородных координатах, позволяющих единым образом выполнять аффинные и перспективные преобразования.
Программное исполнение отсечения достаточно медленный процесс, поэтому, естественно, в мощные дисплеи встраивается соответствующая аппаратура. Первое сообщение об аппаратуре отсечения, использующей алгоритм отсечения делением отрезка пополам и реализованной в устройстве Clipping Divider, появилось в 1968 г. [38]. Этот алгоритм был рассмотрен при изучении технических средств. Здесь мы рассмотрим программные реализации алгоритма отсечения.
Отсекаемые отрезки могут быть трех классов - целиком видимые, целиком невидимые и пересекающие окно. Очевидно, что целесообразно возможно более рано, без выполнения большого объема вычислений принять решение об видимости целиком или отбрасывании. По способу выбора простого решения об отбрасывании невидимого отрезка целиком или принятия его существует два основных типа алгоритмов отсечения - алгоритмы, использующие кодирование концов отрезка или всего отрезка и алгоритмы, использующие параметрическое представление отсекаемых отрезков и окна отсечения. Представители первого типа алгоритмов - алгоритм Коэна-Сазерленда (Cohen-Sutherland, CS-алгоритм) [4] и FC-алгоритм (Fast Clipping - алгоритм) [37]. Представители алгоритмов второго типа - алгоритм Кируса-Бека (Curus-Beck, CB - алгоритм) и более поздний алгоритм Лианга-Барски (Liang-Barsky, LB-алгоритм) [32].
Алгоритмы с кодированием применимы для прямоугольного окна, стороны которого параллельны осям координат, в то время как алгоритмы с параметрическим представлением применимы для произвольного окна.
Вначале мы рассмотрим алгоритм Коэна-Сазерленда, являющийся стандартом де-факто алгоритма отсечения линий и обладающий одним из лучших быстродействий при компактной реализации. Затем рассмотрим наиболее быстрый, но и чрезвычайно громоздкий FC-алгоритм. Далее рассмотрим алгоритм Лианга-Барски для отсечения прямоугольным окном с использованием параметрического представления. Быстродействие этого алгоритма сравнимо с быстродействием алгоритма Коэна-Сазерленда при большей компактности и наличии 3D и 4D реализаций. Последним рассмотрим алгоритм Кируса-Бека, который использует параметрическое представление и позволяет отсекать произвольным выпуклым окном. В заключение сравним быстродействие различных алгоритмов.