Разновидности 3D-графики

Полигональная графика

Аналитическая графика

Фрактальная графика

Сплайновая графика

 

Полигональная графика

      Наиболее распространенной на сегодняшний день является полигональная графика. Это объясняется прежде всего высокой скоростью ее обработки. Любой объект полигональной графики задается набором полигонов. Полигон - это плоский многоугольник. Простейшим вариантом являются треугольные полигоны, ибо, как известно, через любые три точки в пространстве можно провести плоскость. Каждый полигон задается набором точек. Лучше всего задавать набор точек в том порядке, в каком они расположены относительно внешней нормали полигона, так как в данном случае полностью решается проблема удаления нелицевых граней без дополнительных затрат при последующей обработке. Точка же задается тремя координатами - x, y, z. Таким образом, Вы можете задать 3-мерный объект как массив или как структуру.

Аналитическая графика

      Аналитическая графика заключается в том, что объекты задаются аналитически, т.е. формулами.

      Например:

Шар радиуса r с центром в точке (x 0 , y 0 , z 0 ):

(x-x 0 ) 2 +(y-y 0 ) 2 +(z-z 0 ) 2 =r 2

Эллипсоид с радиусами a, b, c и с центром в точке (x 0 , y 0 , z 0 ):

(x-x 0 ) 2 /a 2 +(y-y 0 ) 2 /b 2 +(z-z 0 ) 2 /c 2 =1

Гиперболоиды с радиусами a, b, c и с центром в точке (x 0 , y 0 , z 0 ):

-(x-x 0 ) 2 /a 2 +(y-y 0 ) 2 /b 2 +(z-z 0 ) 2 /c 2 =1

(x-x 0 ) 2 /a 2 -(y-y 0 ) 2 /b 2 +(z-z 0 ) 2 /c 2 =1

(x-x 0 ) 2 /a 2 +(y-y 0 ) 2 /b 2 -(z-z 0 ) 2 /c 2 =1

Параболоиды с центром в точке (x 0 , y 0 , z 0 ):

a(x-x 0 ) 2 +b(y-y 0 ) 2 +c(z-z 0 ) =0

a(x-x 0 ) 2 +b(y-y 0 )+c(z-z 0 ) 2 =0

a(x-x 0 )+b(y-y 0 ) 2 +c(z-z 0 ) 2 =0

Объекты цилиндрического вида:

a(x-x 0 ) 2 +b(y-y 0 ) 2 +c=0

a(x-x 0 ) 2 +b+c(z-z 0 ) 2 =0

a+b(y-y 0 ) 2 +c(z-z 0 ) 2 =0

a(x-x 0 ) 2 +b(y-y 0 )=0

a(x-x 0 ) 2 +c(z-z 0 )=0

a(x-x 0 )+b(y-y 0 ) 2 =0

a(x-x 0 )+c(z-z 0 ) 2 =0

и т.д..

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

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

Фрактальная графика

      Алгоритмы фракталов могут создавать невероятные трехмерные изображения. Ключевое понятие любого фрактала - самоподобие. Объект называют самоподобным, когда увеличенные части объекта походят на сам объект и друг на друга.

      Рассмотрите простую сферу. Является ли она самоподобной? Нет. При значительно большом увеличении она теряет сходство со сферой и начинает походить на плоскость. Сфера не самоподобна.

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

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

      Приписывая цвет к каждому значению высоты, Вы можете отождествить отображение высоты с изображением. Теперь рассмотрим как обрабатывать наш двумерный массив значений высоты.

      Идея:

      Вы начинаете с большим пустым 2-мерным массивом точек. Размерность должна быть (2 m +1)x(2 m +1), где m - натуральное число. Установите значения в углах на одинаковое значение высоты.

      Это - отправная точка для итерации обработки, состоящей из 2-х пунктов:

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

  2. Вы берете каждый ромб и генерируете случайное значение в центре ромба. Значение середины рассчитывается как арифметическое среднее четырех значений в углах, плюс случайная величина, сгенерированная в том же самом диапазоне. Это дает Вам снова квадраты.

      Так, после 1-го прохода Вы закончили бы с четырьмя квадратными полигонами, а после 2-го - с 16 . Третий проход привел бы к 64 квадратным полигонам. Количество полигонов растет очень быстро. Число сгенерированных квадратных полигонов равно 4 i , где i - число итераций через рекурсивную функцию. Поэтому при большей детализации Вам потребуется намного больше вычислительных ресурсов.

      На этом, пожалуй, стоит заканчить рассмотрение фрактальной графики.

Сплайновая графика

      Историю сплайнов принято отсчитывать от момента появления первой работы Шенберга в 1946 году. Сначала сплайны рассматривались как удобный инструмент в теории и практике приближения функций. Однако довольно скоро область их применения начала быстро расширяться, и обнаружилось, что существует очень много сплайнов самых разных типов. Сплайны стали активно использоваться в численных методах, в системах автоматического проектирования и автоматизации научных исследований, во многих других областях человеческой деятельности и, конечно, в компьютерной графике.

      Сам термин "сплайн" происходит от английского spline. Именно так называется гибкая полоска стали, при помощи которой чертежники проводили через заданные точки плавные кривые. В былые времена подобный способ построения плавных обводов различных тел, таких как, например, корпус корабля, кузов автомобиля был довольно широко распространен в практике машиностроения. В результате форма тела задавалась при помощи набора очень точно изготовленных сечений - плазов. Появление компьютеров позволило перейти от этого, плазово-шаблонного, метода к более эффективному способу задания поверхности обтекаемого тела. В основе этого подхода к описанию поверхностей лежит использование сравнительно несложных формул, позволяющих восстанавливать облик изделия с необходимой точностью. Ясно, что для большинства тел, встречающихся на практике, вряд ли возможно отыскание простых универсальных формул, которые описывали бы соответствующую поверхность глобально, то есть, как принято говорить, в целом. Это означает, что при решении задачи построения достаточно произвольной поверхности обойтись небольшим количеством формул, как правило, не удастся. Вместе с тем аналитическое описание (описание посредством формул) внешних обводов изделия, то есть задание в трехмерном пространстве двумерной поверхности, должно быть достаточно экономным. Это особенно важно, когда речь идет об обработке изделий на станках с числовым программным управлением. Обычно поступают следующим образом: задают координаты сравнительно небольшого числа опорных точек, лежащих на искомой поверхности, а через эти точки проводят плавные поверхности. Именно так поступает конструктор при проектировании кузова автомобиля (ясно, что на этой стадии процесс проектирования сложного объекта содержит явную неформальную составляющую). На следующем шаге конструктор должен получить аналитическое представление для придуманных кривых или поверхностей. Вот для таких задач и используются сплайны.

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

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

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

r(u,v)=S i= 0 m S j=0 n a i (u)b j (v)V ij

      Рассмотрим элементарную бикубическую поверхность Безье. Параметрические уравнения фрагмента этой поверхности имеют следующий вид:

r(u, v)=S i= 0 3 S j=0 3 C 3 j C 3 i u i (1-u) 3-i v j (1-v) 3-j V ij

0<=u<=1; 0<=v<=1

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

      Более подробную информацию о сплайновых поверхностях Вы можете найти в книгах, целиком посвященных сплайнам и сплайновым поверхностям.


AddWeb.ru - Раскрутка сайта, продвижение 
сайта, бесплатная раскрутка сайта
Copyright © Diablo 2005-2006. All rights reserved rmsystem@bk.ru icq 227877666
Hosted by uCoz