- •Аппаратные средства мг: устройство pастpового гpафического дисплея
- •Аппаратные средства машинной графики: устройство стpуйного пpинтеpа.
- •Аппаратные средства машинной графики: устройство лазерного пpинтеpа.
- •Аппаратные средства машинной графики: графопостроители.
- •Аппаратные средства машинной графики: манипуляторы типа “мышь”.
- •Двумерные геометрические (аффинные) преобразования
- •Композиция и коммутативность геометрических преобразований. Однородные координаты.
- •Видовой конвейер 2d. Преобразование координат
- •Плоские геометрические проекции. Ортографические проекции.
- •Плоские геометрические проекции. Косоугольные проекции.
- •Компоненты Delphi для представления графической информации
- •Создание реалистических изображений: алгоритм плавающего горизонта.
- •Создание реалистических изображений: алгоритм Вейлера-Азертона для удаления невидимых линий и поверхностей.
- •Создание реалистических изображений: алгоритм использующий z-буфер для удаления невидимых линий и поверхностей.
- •Создание реалистических изображений: алгоритм Ньюэла- Ньюэла-Санча для удаления невидимых линий и поверхностей.
- •Создание реалистических изображений: удаление невидимых линий методом трассировки лучей.
- •Цвет в машинной графике. Модели rgb cmyk
- •Цвет в машинной графике. Модель художника, модель hsv
- •Простая модель освещения
- •OpenGl Основные матрицы и работа с ними
- •Свойства материала в OpenGl Грани
- •Реализация проекций в OpenGl
- •Определение нормалей и закрашивание методом Гуро
- •Определение нормалей и закрашивание методом Фонга
- •Позиционные источники света в OpenGl
- •Направленные источники света в OpenGl
- •Модель освещения в OpenGl
- •Текстуры
- •Текстуры. Mip отображение
- •Разложение отрезка в растр по методу простого дифференциального анализатора.
- •Метод Брезенхема для разложение отрезка в растр
- •Заполнения многоугольников: простой алгоритм заполнения с затравкой.
- •Заполнения многоугольников: построчный алгоритм заполнения с затравкой.
- •Основные понятие и определения компьютерной графики
- •Алгоритмы удаления невидимых линий
- •Алгоритм плавающего горизонта
- •Алгоритм Ньюэла-Ньюэла-Санча
- •Алгоритм Вейлера-Азертона
- •Алгоритм трассировки лучей
Алгоритм Вейлера-Азертона
Включает в себя 4 шага:
-
предварительная сортировка по глубине по Zmax;
-
сортировка многоугольников на плоскости;
-
удаление экранированных многоугольников;
-
рекурсивное подразбиение и окончательная сортировка.
На основе предварительной сортировки находится наиболее приближенный к наблюдателю многоугольник, он выбирается в качестве отсекающего. Далее производится сортировка на плоскость: все многоугольники проецируются на плоскость и разрезаются на части по границе отсекающего. Фрагменты многоугольников, попавшие внутрь отсекающего, формируют внутренний список, остальные – внешний. Если ни одна вершина внутреннего списка не превышает Zmin отсекающего, то все элементы из внутреннего списка экранируются отсекающим – эти многоугольники удаляются, а отсекающий отображается, иначе многоугольник, нарушивший порядок, выбирается отсекающим и проводится повторная процедура формирования внутреннего списка. Если снова есть нарушение порядка, то получаем циклическое экранирование – нужно резать многоугольники и т.д.
Алгоритм трассировки лучей
Алгоритм может учитывать эффекты отражения, прозрачности, затенения, а так же использовать различные методы устранения ступенчатости. Предполагается, что наблюдатель находится на оси Z, картинная плоскость перпендикулярна оси. Фрагмент этой картины отображается в поле вывода, поэтому с каждым пикселем поля вывода можно сопоставить некоторый луч, который необходимо отразить. Наиболее важным алгоритмом является поиск пересечений лучей с объектами. Чтобы повысить эффективность сцены для объектов сцены вводятся объемлющие оболочки – либо сферические, либо прямоугольные. Очевидно, что если луч не пересекает оболочку, то пересечения с объектом нет, иначе – оно допустимо. Для дальнейшего получения эффективности можно ввести оболочки для группы объектов, т.к. они занимают не всю сцену, а находятся группой.
Сначала создается список объектов, содержащий следующую информацию: тип объекта, свойства поверхности, описание сферической оболочки, описание прямоугольной оболочки. Прямоугольной оболочки может не быть, поэтому заводится специальный флаг о ее наличии. Далее для каждого луча:
-
Выполнить тест на пересечение со сферической оболочкой в исходной системе координат.
-
Если луч пересекает сферу, занести объект в список активных объектов.
В противном случае перенести и повернуть луч так, чтобы он совпал с осью Z видовой системы.
Для каждого объекта из списка активных провести тест на пересечение с прямоугольной оболочкой, если она существует. Для этого нужно применить к прямоугольной оболочке наше комбинированное преобразование. Если пересечение не найдено, то закрашивается фоном, в противном случае мы преобразовываем объект в систему координат луча и ищем их пересечение. Если пересечение найдено, заносим объект в список пересечений. Если список пересечений пуст – все закрашивается цветом фона, иначе пересечения сортируются по Z и для работы используются ближайшие к наблюдателю. Если решается только задача удаления невидимых линий, то работа с лучом на этом закончилась, если же нас интересуют эффекты затенения и т.д., то мы должны подвергнуть точку пересечения обратным преобразованиям.