
- •Предмет компьютерная графика.
- •Эволюция технических средств компьютерной графики.
- •3. Программистская модель машинной графики.
- •4. Графический пакет. Основные понятия и определения.
- •Простой графический пакет.
- •Независимость пакета от графических устройств.
- •Геометрические преобразования.
- •Алгоритм Брезинхейма рисования отрезка.
- •Алгоритм впервые разработан для графопостроителя
- •Рисование окружности методом Брезинхейма.
- •Компьютерные шрифты.
- •Термины, относящиеся к шрифтам.
- •Метрические параметры шрифтов.
- •Заполнение областей.
- •Растровая развертка многоугольника.
- •Реалистичные изображения.
- •I. Поверхностные модели
- •Сплайновая кривая.
- •II. Модели сплошных тел.
- •III. Модель сплошных конструктивов.
- •Полигональные сетки.
- •Параметрические кубические кривые.
- •Цвет компьютерной графики.
- •5 Уровней освещенности:
- •Цветовые модели кг.
- •Методы закраски.
- •Закраска полигональной сетки.
- •Параметрические кубические кривые и поверхности.
- •Параметрические бикубические поверхности.
- •Удаление невидимых линий и поверхностей.
- •Сравнение по глубине и перспективным преобразованием.
- •Метод сортировки по глубине.
- •Метод плавающего горизонта.
- •Метод построчного сканирования.
- •Метод разбиения области.
- •Алгоритм Варнока
- •Комбинация примитивов.
- •Взаимное положение точки и объекта.
- •Определение видимых точек.
- •Изображение основных примитивов методом трассировки лучей.
- •2. Квадратичные поверхности.
- •Изображение прозрачных, преломляющих и зеркальных поверхностей.
- •Управление процессом формирования изображения.
- •Детализация поверхностей.
- •Способы вывода изображения в Windows.
Определение видимых точек.
Пусть есть объект, который состоит из D штук примитивов П1,…,Пd,…,ПD.
Kd - количество поверхностей у примитива с номером d.
Кd – номер какой-то поверхности. Кd=1,…, Кd
Skd – степень к – той поверхности (=1 или =2)
Если примитив содержит Кd поверхностей, то чтобы определить видимую точку нужно решить Кd систем уравнений:
Каждая из этих систем может вообще не иметь решение луч и примитив не пересекаются. Иметь одно решение луч касается примитива либо пересекается в одной точке.
Для квадратичной поверхности 2 решения: луч входит в поверхность и выхобит из неё.
Система имеет бесконечное количество решений. Луч совпадает с поверхностью.
Из найденных решений отбираем те, которые лежат на поверхности примитивов.
Пусть оставшихся точек – Вd (реально всего две)
Нужно отобрать две точки: входная, которая ближе всего к наблюдателю, выходная – дальше всего.
Для каждого примитива нашли две точки: луч входит в пространство п выходит из пространства.
Нужно определить видимые точки для объекта в целом:
Для каждого из примитивов строим матрицу:
номера
поверхностей
Все полученные матрицы объединяем в одну; упорядочив точки по расстоянию от наблюдателя и по таблице, которая выше, определяем принадлежит ли точка комбинации или нет.
Точку нужно дальше закрасить.
Нормаль поверхности grad f (x,y,z), берем источник света и т.д.
Но точка может оказаться затемненной:
Чтобы выявить затененность точки, проводим луч из источника света в точку:
Находим количество решений системы; пусть хВ,, уВ, zВ лежит на поверхности примитива и ближайшая к источнику света, если хВ,, уВ, zВ совпадают, то точка в пределах освещенности, если нет, то в тени.
Изображение основных примитивов методом трассировки лучей.
1. Плоский примитив – часть плоскости, ограниченная ломаной.
уравнение плоскости.
Ломаную линию задаем в виде списка точек:
I. Находим точку пересечения луча и плоскости:
луч можно не пересекать с плоскостью
совпадать могут бесконечное число решений
в одной точке
Решений нет, если
и
(луч параллелен плоскости)
и
- луч с плдоскостью совпадает множество решений
в одной точке
II. Принадлежит ли найденная точка многоугольнику.
Е
сли
точка принадлежит многоугольнику, то
проекция точки принадлежит проекции
многоугольника.
Для выпуклого многоугольника точка лежит внутри, если она по одну сторону от всех ребер. (по часовой стрелке).
Пусть
-
ребро и
для
всех векторов направлена вверх z
, то точка внутри.
Векторное произведение 2-х векторов:
Если один и тот же знак, то точка внутри.
Другой способ: соs между векторами.
III. Чтобы окрасить точку, нужно иметь нормаль.
Плоский примитив имеет нулевую толщину нет внешний и внутренней нормали.
Видимая точка будет освещена,
если наблюдатель и источник примитива
по одну сторону .
По
одну сторону, если: