- •Компьютерная графика
- •0915 “Компьютерная инженерия”
- •Чернигов чгту 2008
- •Задание бкс по безье
- •Сплайны
- •3 Алгоритмы вычислительной геометрии. Геометрия на плоскости План раздела
- •Отсечение отрезков по окну
- •Отсечение многоугольника по окну
- •Задача триангуляции
- •Условие Делоне
- •Алгоритм триангуляции Делоне
- •4 Трехмерная вычислительная геометрия план раздела
- •Описание плоскости через точку и нормаль
- •Описание плоскости через три инцидентные ей точки
- •Описание плоскости через вершины полигона
- •Точка встречи плоскости и прямой
- •5 Описание перемещений и деформаций объектов план раздела
- •Перенос, масштабирование и поворот двумерной точки Обычный линейный перенос…
- •Масштабирование координат
- •Поворот (вокруг начала координат)
- •Неоднородность описаний
- •Как перемещение описать умножением?
- •Однородные координаты
- •Формальный подход
- •Но, к счастью…
- •Пример: отображение окна в окно Постановка задачи
- •Решение
- •Октарные и бинарные деревья
- •Дополнительные условия
- •Проверка правильности задания граничного представления
- •Итоги раздела
- •7 Понятие о видеоконвейере
- •Исходное состояние
- •Результат шага 1
- •Что видит и чего не видит наблюдатель?
- •Результат шага 2
- •Результат шага 3
- •Результат:
- •8 Видовое преобразование
- •План раздела
- •Исходное состояние
- •Вычисление базиса ск камеры
- •Стратегия видового преобразования
- •Принцип относительности движений
- •9 Особенности отсечения по видимому объему
- •План раздела
- •Суть действия «отсечения»
- •Различные формы видимых объемов
- •Выпуклые оболочки граней
- •Метод Коэна-Сазерленда в применении к трехмерному случаю
- •Результат быстрой селекции граней
- •Объекты, которые отсекаются в трехмерном случае
- •Общая схема действий по отсечению
- •Как задается видимый объем
- •Дополнительные проблемы отсечения при центральном проецировании
- •Повышение эффективности проверок при центральном проецировании
- •10 Удаление невидимых граней, ребер и вершин
- •План раздела
- •Общая классификация методов удаления невидимого
- •Алгоритмическая основа удаления невидимых примитивов
- •Неустранимое противоречие
- •Классификация методов удаления невидимых примитивов
- •Замечание о трудоемкости методов
- •Алгоритм робертса
- •«Матрица тела»
- •Учет видового преобразования
- •Алгоритм z-буфера
- •Алгоритм заполнения z-буфера
- •Пример работы с z-буфером
- •Достоинства алгоритма z-буфера
- •Простота и универсальность.
- •Он нечувствителен к сложности сцены.
- •Недостаток алгоритма z-буфера
- •Повышенный расход оперативной памяти.
- •11Построение проекций план раздела
- •Общая классификация проекций Понятие «проекция»
- •12Рендеринг по освещенности план раздела
- •Модели локального освещения объектов
- •Ограничения локальной модели освещения объектов сцены
- •Рассеянное освещение
- •Диффузное отражение света
- •Зеркальное отражение света
- •«Краевой эффект» Маха(Mach Bound Effect)
- •Модель затенения Гуро (h.Gouraud)
- •Модель затенения Фонга (Phong)
- •Модификации модели затенения Фонга
- •Иллюстрация методов шейдинга для сравнения
- •Алгоритмы получения высокореалистических изображений общие замечания
- •Классическая прямая трассировка лучей
- •Обратная трассировка лучей
- •Вторичные лучи обратной трассировки
- •Дерево вторичных лучей обратной трассировки
- •Достоинства и недостатки метода обратной трассировки световых лучей
- •Распределенная (стохастическая) трассировка лучей (рстл)
- •О сэмплинге
- •Так почему трассировка здесь называется «распределенная»?
- •И просто несколько красивых картинок…
- •13 Растровые изображения План раздела
- •Растровый документ: Представление слоями
- •Смешение цветов в слоях
- •Алгоритм брезенхема – предпосылки-1
- •Предпосылки-2
- •Проблемы яркости отрезка
- •Компенсация алиасинга яркостью
- •Растеризация окружности – подходы
- •Заливка областей постоянным цветом
- •Классификация областей
- •Классификация областей Итог и примеры
- •Простейший рекурсивный алгоритм заливки
- •Примерный вид текстурированной грани
- •Неочевидные применения текстур
- •Быстрый приближенный «шейдинг по способу Фонга»
- •Быстрое приближенное построение отражений
- •А. Теория цвета и цветоизмерение свет и цвет
- •Феномен составных цветов
- •«Уравновешивание» цветов
- •Странности сине-зеленого цвета
- •«Отрицательный» красный цвет
- •Диаграммы уравновешивания цветов
- •Измерение цвета
- •Цветовой охват
- •Б. Воспроизведение цветов
- •Технология светоизлучения (суммирующая)
- •Реализация модели rgb
- •«Цветовой куб» модели rgb
- •Изохромы
- •Технология цветопоглощения (вычитающая)
- •Субтрактивная цветовая модель cmyk
- •Как задается цвет в модели cmyk
- •Проблемы преобразования цвета
- •«Техническая» цветовая модель l*a*b
- •Использование модели l*a*b
- •«Художественная» цветовая модель hsl
- •Проблемы правильной передачи цвета
- •16Сжатие графических файлов план раздела
- •Перечисление методов точного сжатия
- •Кодирование однородных серий
- •44 44 44 11 11 11 11 11 01 33 Ff 22 22 - исходная последовательность байтов
- •Алгоритм лемпела–зива-велча ( Lempel- Ziev-Welch, lzw )
- •Битовые коды переменной длины (метод хаффмана)
- •Методы энтропийнного сжатия
- •Индексирование цвета
- •7. Седьмое преобразование:
- •Проектор экранный микрозеркальный (устройство)
- •Дискретное микрозеркальное устройство
- •B. Устройства получения твердых копий струйные принтеры
- •Технология электрографического копирования
- •Устройство черно-белого лазерного принтера
- •Устройство цветного лазерного принтера
- •Итоги раздела
- •Джойстик
- •Дискретный
- •Плавный
- •Содержание
Формальный подход
Формально матрица Р0 восстанавливается из первого уравнения
применением обратной матрицы. Для произвольной квадратной матрицы М
Обратная, как известно из курса алгебры, вычисляется по формуле:
Где Aij – алгебраические дополнения компонентов mij исходной матрицы. Поскольку и detM, и Aij – это определители, то понятно, что вычисление обратной матрицы размерности 4х4 является трудоемкой вычислительной задачей.
Но, к счастью…
К счастью, матрицы преобразований являются матрицами специального вида с большим количеством нулей и единиц в них (в основе всех матриц преобразований лежит, как нетрудно видеть, диагональная единичная матрица). В силу этого матрица, обратная матрице перемещения, записывается так:
Обратная матрица для масштабирования:
Поскольку матрица поворота R является ортогональной (вспомните определение ортогональной матрицы), то обратная получается транспонированием исходной:
Согласитесь, описанные способы получения обратных матриц несравненно проще вычисления определителей!
КОМПОЗИЦИЯ НЕСКОЛЬКИХ ПРЕОБРАЗОВАНИЙ
Пример 1
Предположим, дана некая фигура (домик), и мы хотим повернуть ее на заданный угол вокруг точки, не являющейся началом координат.
«Наивное» применение матрицы R к точкам фигуры дает очевидно неправильный результат.
ПРАВИЛЬНОЕ РЕШЕНИЕ
Правильное решение состоит в последовательном выполнении трех шагов, как показано ниже.
2) 3)
Пример 2
Для самостоятельной работы предлагаются еще два примера.
Пример 3
Последовательность выполнения этих сложных преобразований предлагается расписать самостоятельно.
КОММУТАТИВНОСТЬ ПРЕОБРАЗОВАНИЙ
Рассмотрим проблему: имеет ли значение последовательность выполнения отдельных составляющих элементарных операций? Если принять для простоты, что операций две, то положительный ответ на вопрос
означает, что порядок выполнения Т1 и Т2 безразличен. На языке математики говорят, что в этом случае произведение матриц коммутативно.
В общем случае произведение матриц НЕкоммутативно. Но, если оговориться, что сомножителями матричного произведения когут быть матрицы ТОЛЬКО видов Т, S и R, то существуют четыре частных случая, когда коммутативность имеет место. Вот они:
М1 |
М2 |
Перенос Т1 |
Перенос Т2 |
Поворот R1 |
Поворот R2 |
Масштабирование S1 |
Масштабирование S2 |
Масштабирование при Sx=Sy |
Поворот R |
В этих случаях коммутативно.
Пример: отображение окна в окно Постановка задачи
Точка и охватывающее ее окно заданы координатами в пространстве задачи (в оперативной памяти компьютера). Надо отобразить окно и точку из пространства задачи в окно и точку на экране компьютера (графический порт вывода). Положение порта вывода на экране тоже задано.
Решение
Задача будет решаться путем применения к исходной системе координат таких преобразований, чтобы в их итоге исходная пошагово преобразуемая система координат совпала с системой координат графического порта вывода. В силу принципа относительности движения матрицы преобразования системы координат на каждом шаге будут являться обратными для матриц, которые могли бы применяться для соответствующих преобразований точки Р, но при неизменной системе координат.
Шаг 1. Исходное окно прижимает к началу координат нижним левым углом.
Шаг 2. Масштабируем исходное (красное) окно до размеров целевого (синего) окна.
Шаг 3. Ориентацию исходной (красной) системы координат меняем в правой на левую изменением направления вертикальной координатной оси. Это нужно потому, что целевая (экранная) система координат трдиционно является левой.
Шаг 4. Целевое (красное) окно в совмещенной системе координат совмещаем с целевым (синим) окном. Задача решена.
Применяя цепочку матриц преобразования, полученную в этих четырех шагах, к произвольной точке Р, можно найти координаты ее отображения в порте вывода. Следует дополнительно учитывать, что исходные координаты являются вещественными числами, а экранные – целыми, откуда понятно применение округления:
ИТОГИ
Базовыми координатными преобразованиями являются перенос, масштабирование и поворот. Все они удобно описываются матричными уравнениями.
Для придания уравнениям преобразований УНИФИЦИРОВАННОГО вида пользуются так называемыми ОДНОРОДНЫМИ координатами точек, с дополнительной условной координатой 1. Тогда все операции сводятся к умножению матриц.
Неподвижной точкой всех преобразований является начало координат. Поэтому при выполнении комбинированных преобразований приходится точки поворота и центры масштабирования предварительно совмещать с началом координат.
В основе матриц всех базовых преобразований лежит ЕДИНИЧНАЯ матрица. Это сильно упрощает нахождение матриц обратных преобразований, что бывает нужно при программировании операций отмены выполненных преобразований (undo, отмена действия).
6 ГЕОМЕТРИЧЕСКОЕ МОДЕЛИРОВАНИЕ ТРЕХМЕРНЫХ ТЕЛ
ПЛАН РАЗДЕЛА
Моделирование разложением пространства на элементы
Конструктивная пространственная геометрия
Граничное представление
Почему необходимо моделировать?
Реальный мир - бесконечно разнообразен. Мир компьютерный- ограничен. Поэтому для создания возможности обрабатывать трехмерные сцены ограниченными возможностями компьютера приходится разрабатывать специальные приемы и технологии, то есть создавать МОДЕЛИ реальных трехмерных объектов и способы манипулировать ими.
МОДЕЛИРОВАНИЕ ТРЕХМЕРНЫХ ТЕЛ РАЗЛОЖЕНИЕМ ПРОСТРАНСТВА НА ЭЛЕМЕНТЫ
ВОКСЕЛЬНОЕ ПРЕДСТАВЛЕНИЕ
Элемент картинки = PICTURE ELEMENT, используется термин Pixel.
Если по аналогии объем тела поделить на элементарные «кубики», то возникает понятие
Элемент объема = VOLUME ELEMENT, который называют Voxel
Пример воксельного представления тела.
Размерность сцены - Xmax, Ymax, Zmax .
TBody = array[1..Xmax, 1..Ymax, 1..Zmax ] of boolean;
Body1, Body2 : TBody;
Пример описания двух тел массивами инцидентности воксеов.
Body1 = {0000000000001111111111111111100};
Body2 = {0011111111000000000000000000000};
Достоинством этого метода является легкость описания теоретико-множественных операций c телами (пересечь, объединить, вычесть…).
Недостатки:
Информация о поверхности тела в описании содержится неявно.
Большой расход памяти.