Основы компьютерной графики
Понятие поверхности Кунса в системе геометрического моделирования и программирования. Алгоритм Сазерленда-Коэна отсечения прямоугольной областью, его применение в компьютерной графике. Блок-схема функции Intersec. Использование методов Гуро и Фонга.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 15.01.2012 |
Размер файла | 434,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Федеральное агентство по образованию
Государственное образовательное учреждение высшего профессионального образования
Санкт - Петербургский Государственный технологический институт
(технический университет)
Контрольная работа №2
Учебная дисциплина: Компьютерная графика
Группа 9882б, курс III
Студентки: Пименовой Елены Валентиновны
Санкт - Петербург 2011
Поверхность Кунса - это бикубическая поверхность, ограниченная четырьмя пространственными кривыми.
В настоящий момент в системах автоматизированного проектирования реализована возможность построения большого числа различных геометрических объектов. Наиболее сложными для математического описания и в то же время наиболее важными для формирования формы моделируемого тела объектами являются поверхности. Наиболее часто применимыми являются так называемые типовые геометрические элементы формы (поверхности вращения, кинематические поверхности, а также сфера, конус, тор и т.д.). Также присутствуют поверхности, построенные на основе одного или двух каркасов опорных кривых. Последний тип обеспечивает наиболее широкие возможности построения поверхностей конструктором.
В отечественной системе геометрического моделирования и программирования обработки для станков с ЧПУ ГeMMa-3D реализовано несколько способов построения поверхности по двум семействам каркасных кривых. Среди них выделяются построение В-сплайновой поверхности с равномерным узловым вектором (составной поверхности Безье) и поверхности Кунса. У каждого из этих двух способов есть свои преимущества и недостатки.
Основным недостатком поверхности Кунса при простоте расчетных соотношений является невозможность ее экспорта для передачи в другие системы посредством известных стандартов передачи данных.
С помощью какой матрицы можно привести уравнение к каноническому виду?
Какие точки будут закрашены при первой интерации алгоритма Брезенхема для изображения эллипса с радиусами а и в?
(-а,0), (0,в), (а,0),(0,-в)
Какое из следующих выражений описывает кривую в пространстве ?(F1 и F2 - непрерывные функции трёх переменных)
F(x,y,z)=F(x,y,z)
Какая задача постоянно решается в алгоритме Сазерленда - Ходжмена клиппирования треугольника?
- определение длины фигуры, получаемой после очередного отсечения
Какие из перечисленных поверхностей являются развёртывающимися?
- Цилиндр
Для какой части окружности производятся основные построения в алгоритме растровой развёртки окружности Брезенхема?
- восьмой части окружности
Алгоритм Сазерленда - Коэна отсечения прямоугольной областью
В компьютерной графике часто приходится решать задачу выделения некоторой области изображаемой сцены, причем задача эта может решаться как в применении к плоской области (если сцена уже спроецирована на картинную плоскость), так и к трехмерной. Алгоритмы отсечения применяются для удаления невидимых поверхностей и линий, для построения теней, при формировании текстур. Отсекаемая область может быть как правильной формы (прямоугольник или параллелепипед со сторонами, параллельными осям координат или координатным плоскостям), так и неправильной (произвольный многоугольник или многогранник). Для того чтобы эти алгоритмы можно было использовать в задачах изображения динамичных сцен, они должны быть эффективными в отношении времени вычислений. Мы рассмотрим несколько наиболее часто применяемых алгоритмов.
Рассмотрим плоскую сцену, состоящую из отрезков различной длины и направлений, в которой надо выделить часть, находящуюся внутри прямоугольника. Прямоугольник задан списком ребер: <top>, <bottom>, <left>, <right>, отрезки также задаются координатами концевых точек. Область, отсекаемая окном (с учетом его границы), состоит из точек , удовлетворяющих соотношениям
Пусть концы отрезка заданы точками и . Первый шаг алгоритма нацелен на то, чтобы выявить полностью видимые и полностью невидимые отрезки. Отрезок целиком принадлежит выделяемой (клиппируемой) области, если оба его конца удовлетворяют условиям (5.1).
Рис. 5.1. Коды Сазерленда-Коэна для областей
Отрезок полностью невидим, если оба его конца лежат
1. справа от ребра ;
2. слева от ребра ;
3. снизу от ребра ;
4. сверху от ребра .
Во всех остальных случаях отрезок может (но не обязан) пересекать прямоугольное окно.
Для выполнения анализа полной видимости или невидимости отрезка А.Сазерленд и Д.Коэн предложили следующий алгоритм.
Прямые, которым принадлежат ребра прямоугольника, разбивают плоскость на девять областей, каждой из которых присваивается четырехразрядный код.
Каждый бит этого кода "отвечает" за одну из прямых: 1-й (старший) бит - за прямую , 2-й - за прямую , 3-й - за , 4-й - за .
Если в коде области какой-либо бит установлен в 1, то это означает, что она отделена от окна соответствующей прямой.
Схема идентификации областей приведена на рис. 5.1.
Концевым точкам отрезков сцены теперь можно присвоить коды в зависимости от расположения точек.
Ясно, что если коды обоих концов отрезка равны нулю, то отрезок полностью лежит внутри окна.
Для дальнейшего анализа воспользуемся операцией логического умножения кодов (поразрядное логическое "И").
Тогда таблица истинности для кодов, согласно схеме на рис. 5.1, будет выглядеть следующим образом:
компьютерный графика алгоритм сазерленд
Таблица 5.1. Значения истинности для логического умножения кодов областей
T |
F |
F |
F |
T |
T |
F |
F |
||
F |
T |
F |
F |
F |
F |
T |
T |
||
F |
F |
T |
F |
T |
F |
T |
F |
||
F |
F |
F |
T |
F |
T |
F |
T |
||
T |
F |
T |
F |
T |
T |
T |
F |
||
T |
F |
F |
T |
T |
T |
F |
T |
||
F |
T |
T |
F |
T |
F |
T |
T |
||
F |
T |
F |
T |
F |
T |
T |
T |
Из сопоставления таблицы с рисунком видно, что если произведение кодов концов отрезка принимает значение T<rue>, то отрезок целиком лежит по одну сторону какой-то из прямых, причем внешнюю сторону по отношению к окну, следовательно, он полностью невидим. Во всех остальных случаях отрезок может частично лежать внутри окна, поэтому для определения их видимой части надо решать задачу о пересечении отрезков с ребрами окна. При этом желательно по возможности сократить число перебираемых пар "отрезок-ребро".
В самом общем случае существуют две точки пересечения отрезка с ребрами, и эти две точки принимаются за новые концевые точки изображаемого отрезка. Но сначала можно выделить некоторые более простые частные случаи, поиск пересечений для которых является более эффективным. Прежде всего это горизонтальные и вертикальные отрезки, для которых поиск точки пересечения тривиален. Далее, если код одного из концов отрезка равен нулю, то существует только одно пересечение этого отрезка с ребром (или с двумя ребрами, если отрезок проходит через угловую точку окна). На рис. 5.2 приведена общая блок-схема алгоритма отсечения для одного произвольно направленного отрезка.
Рис. 5.2. Блок-схема алгоритма Сазерленда-Коэна
В блок-схеме используются следующие соглашения и обозначения:
· входными данными являются точки
,
массив координат окна ;
на выходе получаем новые концевые точки
,
а также значение переменной IsVisible (0 - отрезок видимый);
· используются следующие вспомогательные функции:
GetCode(r) - определение кода точки;
Intersec0(r1,l) - поиск пересечения отрезка со сторонами окна при условии, что обе точки лежат вне окна; если пересечения нет, устанавливает переменную IsVisible в 0;
Intersec(r1,l) - поиск пересечения отрезка со сторонами окна при условии, что точка r1 лежит в окне;
C1, C2 - коды точек r1, r2.
В приведенном алгоритме теперь остается только детализовать функции Intersec0 и Intersec, эффективность работы которых является ключевым моментом. Рассмотрим один из методов поиска пересечений, который использует параметрическое уравнение прямой, проходящей через точки
:
или в координатном виде
Попробуем определить точку пересечения отрезка с верхней границей окна. Поскольку эта граница описывается соотношениями
то условие пересечения с ней клиппируемого отрезка выглядит следующим образом:
Аналогично выглядят формулы и для остальных границ окна. Если точка расположена внутри окна, то, в зависимости от знака , следует искать пересечение либо с верхней, либо с нижней границей окна. При отсутствии таковых отыскиваются пересечения с левой или правой стороной окна. Но прежде чем перебирать эти варианты, необходимо исключить случаи горизонтальных и вертикальных направлений отрезка. В первом случае точками пересечения с правой или левой границей (в зависимости от знака ) могут быть или , а во втором - или .
Этот алгоритм реализован в виде функции Intersec, блок-схема которой приведена на рис. 5.3.
Теперь рассмотрим случай, когда ни один из концов отрезка не лежит внутри окна. Здесь мы можем найти первую точку пересечения, заменить ею один из концов отрезка и использовать предыдущий алгоритм нахождения второй точки. Заметим, что в данном случае первый шаг не всегда кончается успешно, поскольку предварительный анализ не позволяет полностью исключить все невидимые отрезки. Как и в предыдущем алгоритме, сначала выполняется проверка на горизонтальное и вертикальное направления отрезка. Поскольку часть отрезков мы уже исключили из рассмотрения благодаря предварительному анализу, то для этих простых ситуаций остаются только две возможности, приведенные на рис. 5.4. Здесь точки пересечения определяются совершенно очевидным образом, причем сразу обе.
Затем последовательно рассматриваются четыре случая расположения точки относительно прямых, ограничивающих окно. Если в каком-то из вариантов будет найдена точка пересечения, то анализ прекращается, точка заменяется новой точкой и вызывается функция Intersec. В случае же, когда все четыре варианта не дали положительного результата, переменной IsVisible присваивается значение 0. Алгоритм реализуется функцией Intersec0
Предложенная реализация алгоритма отсечения не является единственной в своем роде. Существуют и другие подходы, в частности использование метода деления отрезка пополам для поиска точек пересечения и выявления видимой части отрезка. Такой вариант алгоритма был предложен Сазерлендом и Спрулом для аппаратной реализации, но он может быть реализован и на программном уровне, хотя при этом эффективность его будет ниже, чем у предыдущего. В нем нет прямого вычисления координат новой точки по явным алгебраическим соотношениям. Поиск осуществляется итерационным методом, в котором на каждом шаге для отрезка, "подозреваемого" в частичной видимости, находится его средняя точка, определяется ее код, затем из двух отрезков оставляются либо оба (если они оба не окажутся полностью невидимыми), либо только один, после чего операции продолжаются с новыми отрезками. Ситуация, когда дальнейшему дроблению подвергаются сразу два вновь полученных отрезка, может возникнуть только на первом итерационном шаге в тех случаях, когда исходный отрезок имеет две точки пересечения с границами окна. На последующих итерационных шагах количество анализируемых отрезков уже не будет увеличиваться. Процесс продолжается до тех пор, пока длина очередного отрезка не станет меньше наперед заданной точности. После этого найденная точка проверяется на предмет пересечения со стороной окна. На рис. 5.6 приведены три варианта отрезков, предварительный анализ которых не классифицирует их как полностью невидимые, и показан первый итерационный шаг. Отрезок a после первого деления дает два частично видимых отрезка, после чего ищутся две точки пересечения. В остальных случаях остается лишь один из двух отрезков, причем в случае отрезка c точка пересечения со стороной окна отсутствует, т.е. обнаруживается полная невидимость отрезка. По сути дела общий алгоритм, показанный на рис. 5.3, сохраняется, изменяется лишь метод поиска точки пересечения.
Блок-схема функции Intersec
Отрезки параллельны сторонам окна
Блок-схема функции Intrsec0
Произвольное расположение отрезков
Метод Фонга
Затенение по Фонгу -- метод освещения полигональных моделей.
Модели обычно задаются набором плоских выпуклых граней. Существует несколько простых методов: Плоское затенение, метод Гуро и метод Фонга.
Гладкий объект от негладкого отличается тем, что на его поверхности можно задать непрерывное поле единичных векторов нормали. Для искусственного построения используется билинейная интерполяция не к значениям освещенности (как в методе Гуро), а к значениям векторов нормали, что помогает достичь более реалистичных результатов.
В качестве модели освещения в точке обычно используются следующие модели:
или
где
-- вектор нормали
-- направление проецирования
-- коэффициент фонового освещения
-- коэффициент зеркального освещения
-- коэффициент диффузного освещения
Метод Фонга требует намного больше вычислений, чем метод Гуро, так как вычисления вектора нормали и освещенности производятся отдельно в каждой точке.
Методы Гуро и Фонга используют значения параметров в предыдущей точке для вычисления значений параметров в следующей.
Методы Гуро и Фонга используют только векторы нормали, заданные в вершинах грани.
Для нахождения вектора нормали в вершине используют нормированную взвешенную сумму векторов нормали граней, которым эта вершина принадлежит:
Размещено на Allbest.ru
Подобные документы
Понятия "рендеринг" и "моделинг" в компьютерной графике. Физические основы процесса визуализации. Проблема освещения и видимости объектов. Однотонная закраска многоугольников и закраска Гуро. Заполнение контура грани. Основные недостатки метода Гуро.
курсовая работа [75,8 K], добавлен 27.02.2011Понятие и виды компьютерной графики. Применение спецэффектов в кинематографе. История развития компьютерной графики. Изменение частоты киносъемки с помощью спецэффектов. Виды компьютерной графики как способ хранения изображения на плоскости монитора.
реферат [34,8 K], добавлен 16.01.2013Создание учебного пособия по компьютерной графике, представленного в электронной форме. Внешние спецификации: интерфейс, входные, выходные данные. Алгоритм и код программы. Руководство пользователя. Принципы организации тестирования программного продукта.
дипломная работа [2,1 M], добавлен 04.07.2013Процесс выделения некоторой части изображения при помощи компьютерной графики. Применение отсечения для устранения ступенчатости. Алгоритмы удаления невидимых линий и поверхностей. Построение теней и формирование фактуры. Способы двумерного отсечения.
презентация [145,7 K], добавлен 14.08.2013Ознакомление с понятием компьютерной графики. Области применения конструкторской и рекламной графики, компьютерной анимации. Рассмотрение преимущества графической визуализации бизнес-процессов. Особенности кольцевой, биржевой и лепестковой диаграмм.
реферат [94,6 K], добавлен 02.02.2016Возможности применения растровой, векторной и фрактальной компьютерной графики. История создания рекламы. Использование интерактивных графических систем в рекламе. Создания макета календаря с помощью векторного графического редактора Adobe Illustrator.
курсовая работа [1,6 M], добавлен 20.10.2014Задачи моделирования освещения. Локальные и глобальные модели. Диффузное и зеркальное отражение. Уравнение освещенности Фонга. Интерполяция цвета (закраска Гуро). Вычисление нормалей и клонирование вершин. Ошибки интерполяции Фонга, поддержка в OpenGL.
презентация [71,7 K], добавлен 14.08.2013Обеспечение отказоустойчивости компьютерной сети при эксплуатации. Требования к проектируемой сети в плане ее назначения и типа настраиваемых серверов. Алгоритм установки требуемого программного обеспечения и настройка конфигурации компьютерной сети.
курсовая работа [1,9 M], добавлен 11.04.2019История развития компьютерной графики. Возникновение компьютерной (машинной) графики: научной, деловой, конструкторской, иллюстративной, художественной и рекламной. Компьютерная анимация. Графика для Интернета. Векторная графика и художественные эффекты.
курсовая работа [692,0 K], добавлен 12.11.2014Суть принципа точечной графики. Изображения в растровой графике, ее достоинства. Обзор наиболее известных редакторов векторной графики. Средства для работы с текстом. Программы фрактальной графики. Форматы графических файлов. Трехмерная графика (3D).
дипломная работа [764,7 K], добавлен 16.07.2011