Компьютерная графика

Введение в машинную графику. Алгоритмы вычерчивания отрезков. Цифровой дифференциальный анализатор. Алгоритм Брезенхема для генерации окружностей. Растровая развёртка сплошных областей. Алгоритм с упорядоченным списком рёбер. Удаление невидимых линий.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 22.11.2010
Размер файла 313,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

т.е.

где штрих сверху обозначает коэффициенты общего уравнения поверхности второго порядка после преобразования. Если , то решения выражаются комплексными числами и луч не пересекает поверхности. Если бесконечная поверхность второго порядка (например, конус или цилиндр) ограничена плоскостями, то эти плоскости также следует преобразовать и проверить на пересечения. Если найдено пересечение с бесконечной ограничивающей плоскостью, то необходимо, кроме того, произвести проверку на попадание внутрь. Однако в преобразованной системе координат эту проверку можно произвести на двумерной проекции фигуры, образованной пересечением ограничивающей плоскости и квадратичной поверхности. Для получения точки пересечения в исходной системе координат необходимо применить обратное преобразование.

Вычисления пересечений для элементов биполиномиальных параметрических поверхностей более сложны. Уиттед предложил простой метод разбиения для элемента бикубической поверхности. Вычисления выполняются с элементом поверхности в его исходном положении. Если луч пересекает сферическую оболочку элемента поверхности, то этот кусок разбивается с помощью алгоритма разбиения предложенного Кэтмулом. Затем луч проверяется на пересечение со сферическими оболочками подэлементов. Если пересечение не обнаружено, то луч не пересекается и с самим элементом. Если же луч пересекается со сферической оболочкой какого-нибудь подэлемента, то последний разбивается дальше. Процесс завершается, если ни одна из сферических оболочек не пересечена или если достигнут заранее определенный их минимальный размер. Эти сферические оболочки минимального размера и являются искомыми пересечениями луча и элемента поверхности.

При реализации преобразования, совмещающего луч с осью z, метод разбиения можно использовать скорее применительно к прямоугольным оболочкам, чем к сферическим. Это сокращает число разбиений и увеличивает эффективность алгоритма. Для параметрических поверхностей, обладающих свойством выпуклой оболочки, например для поверхностей Безье и В-сплайнов, число разбиений можно сократить дополнительно за счет усложнения алгоритма, если для подэлементов воспользоваться их выпуклыми оболочками вместо прямоугольных.

Кадзия разработал метод для биполиномиальных параметрических поверхностей, который не требует их подразделения. Этот метод основан на понятиях, заимствованных из алгебраической геометрии. Решения получающихся при этом алгебраических уравнений высших степеней находятся численно. Метод, подобный этому, можно реализовать в преобразованной системе координат. Напомним, что биполиномиальная параметрическая поверхность определяется уравнением

Q (u, w) = 0

с компонентами

x = f (u, w)

y = g (u, w)

z = h (u, w)

в преобразованной системе координат выполнено условие x = y = 0. Значит,

f (u, w) = 0

g (u, w) = 0

Совместное решение этой пары уравнений дает значения u и w для точек пересечения. Подстановка этих значений в уравнение z = h (u, w) дает компоненту z для точек пересечения. Неудача попытки найти действительное решение означает, что луч не пересекает поверхность. Степень системы уравнений для u, w равна произведению степеней биполиномиальных поверхностей. Бикубическая поверхность, например, имеет шестую степень. Следовательно, в общем случае потребуются численные методы решения. Там, где это допустимо, для начального приближения u и w можно использовать пересечения луча с выпуклой оболочкой. Для получения пересечений в исходной системе координат, как и ранее, следует использовать обратное преобразование.

Если трассируемый луч пересекает объекты сцены в нескольких точках, то необходимо определить видимое пересечение. Для алгоритмов определения видимости простых непрозрачных поверхностей пересечением с видимой поверхностью будет точка с максимальным значением координаты z. Для более сложных алгоритмов, учитывающих отражения и преломления, эти пересечения следует упорядочить вдоль луча по расстоянию от его начала. В преобразованной системе координат этой цели можно достичь простой сортировкой по z.

Алгоритм трассировки лучей для простых непрозрачных поверхностей можно представить следующим образом:

Подготовка данных для сцены:

Создать список объектов, содержащий по меньшей мере следующую информацию:

Полное описание объекта: тип, поверхность, характеристики и т. п.

Описание сферической оболочки: центр и радиус,

Флаг прямоугольной оболочки. Если этот флаг поднят, то будет выполнен габаритный тест с прямоугольной оболочкой, если же он опушен, то тест выполняться не будет. Заметим, что габаритный тест необходим не для всех объектов, например для сферы он не нужен.

Описание прямоугольной оболочки: xmin, xmax, ymin, ymax, zmin, zmax.

Для каждого трассируемого луча:

Выполнить для каждого объекта трехмерный тест со сферической оболочкой в исходной системе координат. Если луч пересекает эту сферу, то занести объект в список активных объектов. Если список активных объектов пуст, то изобразить данный пиксел с фоновым значением интенсивности и продолжать работу. В противном случае, перенести и повернуть луч так, чтобы он совместился с осью z. Запомнить это комбинированное преобразование.

Для каждого объекта из списка активных объектов:

Если флаг прямоугольной оболочки поднят, преобразовать, используя комбинированное преобразование, эту оболочку в систему координат, в которой находится луч1 и выполнить соответствующий тест. Если пересечения с лучом нет, то перейти к следующему объекту. В противном случае преобразовать, используя комбинированное преобразование, объект в систему координат, в которой находится луч, и определить его пересечения с лучом, если они существуют. Занести все пересечения в список пересечений.

Если список пересечений пуст, то изобразить данный пиксел с фоновым значением интенсивности.

В противном случае определить z для списка пересечений.

Вычислить преобразование, обратное комбинированному преобразованию.

Используя это обратное преобразование, определить точку пересечения в исходной системе координат.

Изобразить данный пиксел, используя атрибуты пересеченного объекта и соответствующую модель освещенности.

Заметим, что алгоритм определения видимости простых непрозрачных поверхностей, не требует вычислять преобразование, обратное комбинированному, или определять точку пересечения в исходной системе координат, если в модели освещения не возникает необходимость включения в алгоритм свойств поверхности объекта или ее ориентации в точке пересечения. Эти шаги включены в данный алгоритм для полноты и удобства при реализации алгоритма трассировки лучей с учетом общей модели освещенности.

Две модификации этого простого алгоритма заметно повышают его эффективность. Первая модификация основывается на понятии кластерных групп пространственно связанных объектов. Например, предположим, что сцена состоит из стола, на котором стоят ваза с фруктами и блюдо с конфетами. В вазе лежат апельсин, яблоко, банан и груша. Блюдо содержит несколько конфет разных форм и цветов. Вводятся сферические оболочки для групп или кластеров связанных объектов, например для вазы и всех плодов в ней, для блюда и всех конфет в нем, а также для стола и всех предметов на нем. Сферические оболочки, охватывающие более чем один объект, называются сферическими кластерами. Если это необходимо, то можно ввести и прямоугольные кластеры Вводится, кроме того, наибольший сферический кластер, именуемый сферой сцены, которая охватывает все объекты в этой сцене. Затем сферические оболочки обрабатываются в иерархическом порядке. Если луч не пересекает сферу сцены, то он не может пересечь и ни одного из ее объектов. Следовательно, пиксел, соответствующий этому лучу, будет изображен с фоновым значением интенсивности. Если же луч пересекает сферу сцены, то на пересечение с лучом проверяются сферические кластеры и сферические оболочки объектов, не содержащихся ни в одном из сферических кластеров, принадлежащих кластеру сцены. Если луч не пересекает сферический кластер, то сам этот кластер и все объекты или кластеры, содержащиеся в нем, исключаются из дальнейшего рассмотрения. Если ли же луч пересекает кластер, то эта процедура рекурсивно повторяется до тех пор, пока не будут рассмотрены все объекты. Если луч пересекает сферическую оболочку некоего объекта в какой-нибудь точке, то этот объект заносится в список активных объектов. Эта процедура значительно сокращает количество вычислений точек пересечения луча со сферическими оболочками и тем самым повышает эффективность всего алгоритма.

Вторая модификация использует упорядочение по приоритет чтобы сократить число объектов, для которых вычисляются пересечения с лучом. Вместо того, чтобы немедленно производить вычисление пересечения объекта к лучом, как это делается в изложенном выше простом алгоритме, объект помещается в список пересечённых объектов. После рассмотрения всех объектов сцены преобразованный список пересеченных объектов упорядочивается по приоритету глубины. Для определения приоритетного порядка можно использовать центры сферических оболочек или наибольшие (наименьшие) значения z прямоугольных оболочек. Пересечения луча с объектами из списка пересеченных объектов определяются в порядке их приоритетов. К сожалению точка пересечения луча с первым из объектов в упорядоченном по приоритетам списке пересеченных объектов необязательно будет видимой. Необходимо определить точки пересечения луча со всеми потенциально видимыми объектами из множества {Q} и занести их в список пересечений. Затем модифицированный алгоритм упорядочивает этот список пересечений так, как это делалось и в простом алгоритме. К счастью, множество {Q} потенциально видимых объектов обычно значительно меньше числа объектов в списке пересеченных лучом. Следовательно, эффективность алгоритма возрастет. Обе эти модификации применимы также и к общему алгоритму трассировки лучей, учитывающему отражение, преломление и прозрачность.

Изложенный выше простой алгоритм не использует того обстоятельства, что некоторые грани многогранника являются нелицевыми и их можно сразу удалить, не учитывается здесь и возможная когерентность сцены. Например, несуществен порядок обработки пикселов. Вместе с тем рассмотрение этих пикселов в порядке сканирования строки развертки позволило бы воспользоваться в алгоритме когерентностью сканирующих строк. Другой подход может заключаться в подразделении сцены, причем учет когерентности областей привел бы к уменьшению числа объектов, рассматриваемых для каждого луча и, следовательно, к повышению эффективности алгоритма. Хотя использование подобных приемов повышает эффективность алгоритма определения видимости непрозрачных поверхностей их невозможно применить в общем алгоритме трассировки лучей, который учитывает отражение, преломление и прозрачность. Например, если в алгоритме учтено отражение, то объект, который полностью закрыт другим объектом, может оказаться видимым, как отражение от третьего объекта. Поскольку метод трассировки лучей является метолом грубой силы, алгоритмы определения видимости непрозрачных поверхностей, обсуждавшиеся ранее, являются более эффективными.

Д. Рот указал, что алгоритм трассировки лучей можно использовать также и для создания каркасных чертежей сплошных тел. При этом предполагается, что лучи порождаются в том порядке, в каком происходит сканирование экрана, т.е. сверху вниз и слева направо. Получающаяся процедура такова:

Если видимая поверхность для Пиксел(x, y) соответствует фону или отличается от видимой поверхности для Пиксел(x - 1 , y) или для Пиксел(x, y - 1), то изобразить этот пиксел. В противном случае пиксел не изображать.

Алгоритм трассировки лучей можно использовать, кроме того, для определения физических свойств сплошного тела. Полное рассмотрение этого вопроса не входит в эту работу. Однако для иллюстрации этого подхода приведем один пример. В частности, объем любого сплошного тела можно определить, аппроксимируя его суммой маленьких прямоугольных параллелепипедов. Это можно проделать, породив множество параллельных лучей, расположенных на определенных расстояниях друг от друга. Точки пересечения каждого луча с заданным объемом вычисляются и упорядочиваются вдоль направления этого луча. Если подвергнуть луч переносу, совмещающему его с осью z, как это было описано выше, то объем каждого прямоугольного параллелепипеда будет равен:

где lx и ly - расстояние между лучами по горизонтали и вертикали соответственно. Каждое слагаемое (zi-1 - zi) представляет собой участок луча, лежащий внутри заданного тела. Объем тела, следовательно, равен сумме объемов всех таких прямоугольных параллелепипедов. Точность результатов зависит от числа использованных лучей. Точность можно повысить, умеренно увеличив объем вычислений и рекурсивно уменьшив размер «пиксела», в том случае, если объемы смежных прямоугольных параллелепипедов различаются более чем на заранее заданную величину. При таком подходе точнее определяются объемы тех элементов тела, где имеют место быстрые изменения, например в окрестностях ребер тел, ограниченных криволинейными поверхностями.

Ввиду внутренне присущей алгоритму трассировки лучей параллельности вычислений (здесь все лучи обрабатываются одинаково и независимо друг от друга) его можно реализовать аппаратно на основе интегральных схем с использованием методов параллельной обработки.

Заключение

В этой работе детально обсуждалось несколько основных алгоритмов, используемых для решения задачи удаления невидимых линий или поверхностей. Однако это далеко не все, что имеется. Кроме выше сказанного можно назвать алгоритм удаления невидимых линий предложенный Хеджли, который основан на использовании списка приоритетов, разбиения и построчного сканирования. Этот алгоритм работает в пространстве объекта, получает на входе выпуклые или невыпуклые многоугольники, а оценка его эффективности линейно зависит от числа объектов.

Другим примером является предложенный Азертоном интервальный алгоритм построчного сканирования, который используется для визуализации сцен, получающихся в системе конструктивного моделирования сплошных тел. Внутренний цикл этого алгоритма изменен так, чтобы можно было реализовать одномерные теоретико-множественные операции, необходимые для моделирующей системы, которая пользуется алгоритмом трассировки лучей. Азертон указывает, что этот интервальный алгоритм построчного сканирования требует примерно в 60 раз меньше времени, чем обычный алгоритм трассировки лучей.

В заключении хочу сказать, что компьютерная графика не стоит на месте. Уже давно существуют многочисленные программные и аппаратные реализации алгоритмов построения изображения. На рынке достаточно широко представлены всевозможные графические акселераторы и массивы быстрой памяти. Ведущие производители электронных компонентов поддерживают обработку изображения на уровне процессорной техники (MMX - Intel, 3D Now - AMD), следовательно, становится возможным реализация «медленных», но дающих лучшее качество изображения алгоритмов. Отдельно следует отметить такое явления, как виртуальная реальность, которая уже в настоящее время получает широкое распространение. Одним словом, компьютерная графика будет развиваться до тех пор - пока будет развиваться и совершенствоваться компьютерная техника.

Литература

1. Д. Роджерс «Алгоритмические основы машинной графики» Москва «Мир» 1989.

2. Е.В. Шикин, А.В. Боресков, А.А. Зайцев «Начала компьютерной графики» Москва «Диалог - МИФИ» 1993.

Размещено на Allbest.ru


Подобные документы

  • Методика определения линий ребер, поверхностей или объемов, которые видимы или невидимы для наблюдателя, находящегося в заданной точке пространства. Сложность задачи удаления невидимых линий и поверхностей и пути ее разрешения, разработка алгоритмов.

    презентация [361,6 K], добавлен 14.08.2013

  • Рассмотрение теоретических основ машинной графики. Описание алгоритма удаления невидимых линий и поверхностей алгоритмом "плавающего горизонта" на трехмерных поверхностях. Создание программы Borland Delphi 7 и составление инструкции пользователя.

    курсовая работа [654,3 K], добавлен 28.04.2014

  • Процесс выделения некоторой части изображения при помощи компьютерной графики. Применение отсечения для устранения ступенчатости. Алгоритмы удаления невидимых линий и поверхностей. Построение теней и формирование фактуры. Способы двумерного отсечения.

    презентация [145,7 K], добавлен 14.08.2013

  • Понятие растра и растровой графики. Аффинные преобразования на плоскости и в пространстве. Цветовые модели RGB, MCYK. Алгоритмы вывода линий и фигур, устранения ступенчатости, удаления невидимых линий, закраски фигур. Графические эффекты, анимация.

    лекция [281,0 K], добавлен 26.07.2013

  • Сутність та зміст алгоритму Брезенхема для цифрових графопобудовувачів, сфери його застосування. Графік похибки в алгоритмі. Результати роботи покрокового циклу. Оцінка виконання покрокового алгоритму Брезенхема генерації кола, етапи його розв'язання.

    реферат [326,2 K], добавлен 25.03.2011

  • Общие требования к изображению отрезка с помощью цифрового дифференциального анализатора. Сравнительный анализ обычного и несимметричного алгоритмов и алгоритма Брезенхема для генерации векторов (соединения двух точек изображения отрезком прямой).

    презентация [65,3 K], добавлен 14.08.2013

  • Построение перспективной проекции, алгоритм удаления невидимых линий и поверхностей, получения изменений формы и движения объекта. Обобщенная структурная диаграмма программы, предназначение данных и основных переменных. Блок-схема процедур и функций.

    курсовая работа [2,0 M], добавлен 08.02.2011

  • Компьютерная графика как область информатики, занимающаяся проблемами получения различных изображений на компьютере. Области применения компьютерной графики. Двумерная графика: фрактальная, растровая и векторная. Особенности трёхмерной графики.

    реферат [756,4 K], добавлен 05.12.2010

  • Компьютерная графика - область информатики, занимающаяся проблемами получения различных изображений. Виды компьютерной графики: растровая, векторная, фрактальная. Программы для создания компьютерной анимации, область применения, форматы хранения.

    реферат [29,1 K], добавлен 16.03.2010

  • Компьютерная растровая и векторная графика. Графические редакторы. Форматы файлов для хранения растровых графических изображений. Особенности защиты информации в современных условиях. Идентификация и подлинность доступа в систему. Механизмы защиты.

    реферат [31,4 K], добавлен 26.01.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.