- •Предмет компьютерная графика.
- •Эволюция технических средств компьютерной графики.
- •3. Программистская модель машинной графики.
- •4. Графический пакет. Основные понятия и определения.
- •Простой графический пакет.
- •Независимость пакета от графических устройств.
- •Геометрические преобразования.
- •Рисование окружности методом Брезинхейма.
- •Компьютерные шрифты.
- •Алгоритм Брезинхейма рисования отрезка.
- •Алгоритм впервые разработан для графопостроителя
- •Термины, относящиеся к шрифтам.
- •Метрические параметры шрифтов.
- •Заполнение областей.
- •Растровая развертка многоугольника.
- •Реалистичные изображения.
- •I. Поверхностные модели
- •Сплайновая кривая.
- •II. Модели сплошных тел.
- •III. Модель сплошных конструктивов.
- •Полигональные сетки.
- •Параметрические кубические кривые.
- •Цвет компьютерной графики.
- •5 Уровней освещенности:
- •Цветовые модели кг.
- •Методы закраски.
- •Закраска полигональной сетки.
- •Параметрические кубические кривые и поверхности.
- •Параметрические бикубические поверхности.
- •Удаление невидимых линий и поверхностей.
- •Сравнение по глубине и перспективным преобразованием.
- •Метод сортировки по глубине.
- •Метод плавающего горизонта.
- •Метод построчного сканирования.
- •Метод разбиения области.
- •Алгоритм Варнока
- •Комбинация примитивов.
- •Взаимное положение точки и объекта.
- •Определение видимых точек.
- •Изображение основных примитивов методом трассировки лучей.
- •2. Квадратичные поверхности.
- •Изображение прозрачных, преломляющих и зеркальных поверхностей.
- •Управление процессом формирования изображения.
- •Детализация поверхностей.
- •Способы вывода изображения в Windows.
2. Квадратичные поверхности.
Общий вид:
Нужно найти точку пересечения луча и квадратичные поверхности.
Луч зададим в параметрическом виде:
Введем обозначения:
Подставим в уравнение поверхности:
Раскрываем скобки:
-
не пересекаются
-
в одной точке либо соприкасаются
-
2 решения
Изображение прозрачных, преломляющих и зеркальных поверхностей.
1
– зеркальное отражение
2 – диффузное отражение
3 – преломление
4 – диффузное преломление
Для каждой поверхности, найдя видимую точку, считаем, что луч состоит из двух составляющих: зеркально – отражающей и преломляющей. Два полученных луча прослеживаем до следующей поверхности и т.д., таким образом строим дерево лучей.
Каждый луч прослеживаем до тех пор, пока:
луч попадает на незеркальную непрозрачную поверхность
луч покидает пределы сцены
луч попадает в источник света
интенсивность луча падает ниже некоторого порога
Отражаемый поверхностью луч состоит из рассеянной, диффузной и зеркальной Iska Iskd cos Iskd cosp* составляющих.
Если луч движется в полупрозрачном теле, то интенсивность луча с расстоянием уменьшается по закону Бугера-Ламберта:
I0 – интенсивность исходного луча
- коэффициент поглащающей среды
r – расстояние, которое прошел луч
Для
вычисления освещенности нужно иметь
внешнюю нормаль к поверхности. Если
поверхность
,
точки, для которой
принадлежит телу.
Тогда внешняя нормаль:
v – видимая точка
нормаль можно считать внешней, если направление на наблюдателя и направление нормали составляют угол 900, тогда внешняя нормаль:
R – вектор от объекта к наблюдателю.
Управление процессом формирования изображения.
Выбор уравнения дискретизации: на изображение объекта количество точек должно быть таким, чтобы минимально значимая видимая деталь имела размер 2 пикселя.
Пусть имеется матрица рецепторов размерности II , и хотим выбрать расстояние между рецепторами.
Важно сократить количество вычислений:
распараллелим их: примитивы, входащие в состав объекта окружаем оболочкой (параллепипед или элипсоид)
Находим точку пересечения луча с оболочкой: если луч не пересекается с оболочкой, то и не пересекается с примитивами.
Коэффициенты (габариты) относительно z:
О
– оболочка
(для
элипсоида)
Детализация поверхностей.
На поверхность надо нанести детали. Проще всего включить в состав объекта многоугольники, описывающие детали.
Но это «накладно»: нужна избыточная память и программирование.
Другой способ – текстурирование: формируется бинарное изображение (bit map), описывающее детали.
Затем отображаем bit map на поверхность.
Другой способ – фрактальные поверхности.
Фрактальный объект получается так: делаем некоторое действие над объектом, а затем повторяем это действие над получившимися частями рекурсивно.
Пусть есть описание объекта – треугольник:
Разбиваем его стороны 3-мя точками пополам. Затем их случайно сместим по вертикали:
Точки массива нужно хранить универсально: лучше всего - мерный массив.
Величину случайных смещений нужно уменьшать по мере дробления треугольников.
Еще способ – внесение случайных или детерминированных искажений в нормаль к поверхности при закраске.
Окраска.
IA – рассеянный свет
Kd – диффузная составляющая
KS – зеркальная составляющая
- угол между направлением идеального отражения и направлением на наблюдателя.
Kd ,KA , KS : К близкое к 1 – объект блестящий, (металлический)
К0 – объект матовый
Для грязного пола Kd большое, KS мало.
Считаем, что интенсивность источника света: 0 –1 (0-черный 1-белый)
IA – на порядки ниже интенсивности источника света.
Получили I:
Видеокарта может работать в режимах:
24-бит. цвет: 3 составляющие по байту
16-бит. цвет: 5 красный, 5 зеленый, 6 синий
4-бит. цвет: всего 16 цветов., 1 бит красный, 1 зеленый, 1 синий, 1 на яркость.
Для 24-битового цвета: для каждой составляющей 256 различных значений: 0-255
Для составляющей: I-255
В Borland цвет точки типа Тcolor:
4 байта: 00000000, R,G,B.
C=RGB(Br,BG,Bb)
В DOS – 16 цветов.
Многоугольник закрашивается функцией FUNoly, но, чтобы получить градацию, в прамоугольнике размещают цветные точки: чем больше их, тем ярче цвет.
Матрица возбуждения:
Пусть I=0.5
для
закраски многоугольника 44
пикселя.
16*0.5=8 ставим пикселя в точки, где интенсивность 8.
Текущий ……….цвет и способ заливки устанавливаем процедурой SetFillPattern.
