Курсовая: Программирование в Pascal. Моделирование 3D-объектов - текст курсовой. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Курсовая

Программирование в Pascal. Моделирование 3D-объектов

Банк рефератов / Программирование

Рубрики  Рубрики реферат банка

закрыть
Категория: Курсовая работа
Язык курсовой: Русский
Дата добавления:   
 
Скачать
Microsoft Word, 1577 kb, скачать бесплатно
Заказать
Узнать стоимость написания уникальной курсовой работы

Узнайте стоимость написания уникальной работы

Федеоальное агенство по образованию РФ государственное образовательное учреждение высшего профессионального образования Смоленский государственный университет Программирование в Pascal . Моделирование 3 D -объектов . Курсовая Р абота С тудента 3 курса заочного отделения физико-математического факультета специальность: «Информатика» Мялкина Ивана Андреевича Научный руководитель: Сенчилов Владислав Владимирович Смоленск 2011 г. Оглавление Введение. 3 Этапы развития компьютерной графики 5 Понятие трехмерной графики 8 Организация процесса построения проекции. 11 Проволочная модель 11 Отсечение нелицевых граней 12 Вращение 15 Программная реализация построения изображения. 17 Построение сложных моделей. 23 Заключение 27 Литература 28 Приложение 29 Введение. П рограммная реализация построения изображения трехмерных объектов встречается все реже. Это вызвано большими затратами ресурсов вычислительной машины. В последнее время активно ведётся разработка систем построения объемных изображений, использующих графический процессор современных видеоадаптеров взамен центрального процессора. Сегодня эффективность видеоадаптеров для таких вычислений намного выше и позволяет строить более сложные и реалистичные сцены, но в то же время имеет ряд недостатков. Основным аспектом аппаратной визуализации в первую очередь является ориентация на скорость исполнения задачи, получение качественного результата задача второстепенная. Кроме того накладываются ограничения набором инструкций адаптера, предусмотренным производителем. Программную обработку можно встретить в основном в системах моделирования компании Autodesk . Иногда программное построение изображений имеет некоторые преимущества по сравнению с аппаратной реализацией – одним из главных особенностей является как разбиение процесса на множество потоков (распараллеливать, вследствие большого объема однотипных вычислений), и как следствие использовать в многопроцессорных системах. Как противопоставление, используя программные методы моделирования и построения изображения, программист ограничивается только собственной фантазией – примером такого продукта является система визуализации изображения V-Ray. Система V - ray позволяет моделировать крайне реалистичное освещение в трехмерных сценах, отражения и рассеивания света, и, вследствие, требует большего количества расчетов. Аппаратное построение по сравнению с программным наследует большинство основных принципов реализации – от расчета и построения нормалей до формирования z - buffer – отличие в выполнении расчетов на видеоадаптере, высвобождая центральный процессор для других задач. Трехмерное моделирование или 3 D графика позволяет решать множество задач и применяется различных сферах деятельности . Э то как строительство – результатом может быть модель будущего дома, как частного, так и многоквартирного , офисного здания, или же любого промышленного объекта. Кроме того, визуализация активно применяется в дизайн-проектах интерьеров. О бъемное изображение спроектированного сооружения отличается фотографической точностью и позволяет лучше представить себе, как будет выглядеть проект, воплощенный в жизни, внести определенные коррективы. 3D модель обычно производит гораздо большее впечатление, чем все остальные способы презентации будущего проекта. Передовые технологии позволяют добиваться потрясающих результатов. 3 D модели популярны так же набирают популярность среди веб-дизайнеров . Многие конструкторы уже давно перешли от использования линейки и карандаша к современным трехмерным компьютерным программам. На основе трехмерного моделирования основаны и множество систем автоматизированного проектирования (САПР) для визуализации результатов, реализуемых математическим обеспечением для демонстрации тех или иных физических процессов. Постепенно новые технологии осваивают и другие компании, прежде всего, производственные и торговые, но не так активно. В основном трехмерные модели используются в демонстрационных целях. Они незаменимы для презентаций, выставок, а также используются в работе с клиентами, когда необходимо наглядно показать, каким будет итоговый результат. Кроме того, методы трехмерного моделирования полезны в ситуациях , где нужно показать в объеме уже готовые объекты или те объекты, которые существовали когда-либо. Все чаще наработанные технологии начинают использоваться в кинематографе, телевидении, а так же все чаще в компьютерных играх. Трехмерное моделирование это не только будущее, но прошлое и настоящее. Этапы р азвития компьютерной графики Представление данных на мониторе компьютера в графическом виде впервые было реализовано в середине 50-х годов для больших ЭВМ, применявшихся в научных и военных исследованиях. Первые вычислительные машины не имели отдельных средств. Для работы с графикой, однако, уже использовались для получения и обработки изображений. Программируя память первых электронных машин, построенную на основе матрицы ламп, можно было получать узоры. В середине 1960-х гг. появились разработки в промышленных приложениях компьютерной графики. Графикой на тот момент занимались только при выводе на принтер, в этот период были заложены основные математические основы. Так, была разработана цифровая электронная чертёжная машина, немногим позже были представлены и первые системы автоматизированного проектирования. В 70-х годах начали появляться персональные компьютеры, т.е. появился доступ пользователя к дисплеям. Роль графики резко возросла, но наблюдалось очень низкое быстродействие компьютера, ввиду чего подавляющее большинство программ писалось на ассемблере. Но уже спустя совсем немного времени, в 80-х годах появились персональные компьютеры, позволяющие выводить графические объекты на экраны мониторов, что позволило использовать машинную графику в качестве инструмента специалистам различных областей, не связанных с программированием. Увеличение памяти и скорости обработки информации в персональных ЭВМ, создание видеокомплексов с широким набором программ машинной графики, возможность управления ими в диалоговом режиме способствовали дальнейшему расширению применения машинной графики. Важную, практически определяющую роль в этом процессе сыграл выпуск компанией Apple компьютеров Macintosh. Они были для своего времени настоящей революцией. Во-первых, Macintosh серийно поставлялся с цветным монитором. Во-вторых, его операционная система обладала наглядным, визуальным интерфейсом (своего рода аналог более поздней ОС Windows). И в-третьих, их мощности было достаточно для обработки графических изображений. Именно поэтому Macintosh сразу заслужил внимание множества профессиональных художников и дизайнеров, которые сменили карандаш и кисть на мышь и клавиатуру. С тех пор графический способ отображения данных стал неотъемлемой принадлежностью подавляющего числа компьютерных систем, в особенности персональных. Графический интерфейс пользователя сегодня является стандартом “де-факто” для программного обеспечения разных классов, начиная с операционных систем. Результат многолетнего развития технологий данного рода индустрии можно ежедневно наблюдать в повседневной жизни в неожиданных местах – от старой доброй растровой графики до векторной графики и 3 D . Для упрощения работы с графикой в настоящий момент существует ряд программных и аппаратных решений, позволяющих сконцентрироваться на основной задаче. Н а рынке широко представлены всевозможные графические акселераторы и массивы быстрой памяти. Ведущие производители электронных компонентов , такие как Intel и AMD , поддерживают обработку изображения на уровне процессорной техники ( MMX , 3 D Now ), следовательно, становится возможным реализация «медленных», но дающих лучшее качество изображения алгоритмов. Среди средств, упрощающих написание программной части к орпорация Microsoft предлагает два решения. Первое это DirectX , без которого не в состоянии работать подавляющее большинство приложений игровой индустрии. DirectX — это набор готовых классов, процедур, функций, структур и констант. DirectX представляет собой интерфейс программирования приложений ориентированный на упрощенное использование аппаратных мультимедиа-решений компьютера, а так же подразумевает прямой доступ к ним . DOS позволяла разработчику получить прямой доступ к видеокарте, клавиатуре/мыши/джойстику и прочим частям системы, в то время как новая ОС, Windows, с её защищённой моделью памяти, предоставляла более стандартизованный, но в то же время весьма ограниченный и накладный доступ к устройствам. Вторым решением для разработчиков является Microsoft XNA - набор инструментов с управляемой средой времени выполнения . NET для DirectX , облегчающий разработку и управление компьютерными играми и графическими приложениями. Использование этого продукта позволяет избежать многих технических трудностей и отстраниться от написания подсистемы вывода графики – остается подгрузить уже заранее подготовленные структуры объектов (модели) и описать их взаимодействие в процессе работы приложения. Существует ряд конкурирующих решений, таких как OpenGL - открытая графическая библиотека. Это довольно мощный независимый от языка программирования, кросс-платформенный программный интерфейс для написания приложений, использующих как двумерную, так и трёхмерную компьютерную графику. Он включает в себя более 250 функций для рисования сложных трёхмерных сцен из простых примитивов, довольно часто используется при создании компьютерных игр, САПР, систем виртуальной реальности, а так же визуализации в научных исследованиях. Существенным преимуществом платформы являются эффективные реализации OpenGL для Windows, Unix-платформ, PlayStation 3 и Mac OS, в отличие от DirectX , применимого только в среде Windows . Еще одной важной особенностью среды является возможность исключительно программной реализации спецификации OpenGL одной из которых является библиотека Mesa в случае отсутствия аппаратных средств либо скудной производительности последних. Для программиста OpenGL хорош не только своей сравнительной простотой реализации и наглядной простотой кода, но и большим выбором дополнительных библиотек, позволяющим расширить возможности среды. Яркими представителями являются GLU и GLUT . Понятие трехмерной графики Трёхмерной графикой принято называть раздел компьютерной графики, включающий в себя совокупность приемов и инструментов (как программных, так и аппаратных), предназначенных для изображения объёмных объектов. Больше всего применяется для создания изображений на плоскости экрана или листа печатной продукции. Трёхмерное изображение на плоскости отличается от двумерного тем, что включает построение геометрической проекции трёхмерной модели сцены на плоскость (например, экран компьютера) с помощью специализированных программ. При этом модель может как соответствовать объектам из реального мира, так и быть полностью абстрактной. Трёхмерная графика обычно имеет дело с виртуальным, воображаемым пространством, которое отображается на плоской, двухмерной поверхности дисплея или листа бумаги (рис.1). Рис унок 1 Задача трёхмерного моделирования — описать эти объекты и разместить их в сцене с помощью геометрических преобразований в соответствии с требованиями к будущему изображению. Математическая либо векторная пространственная модель превращается в плоскую (растровую) картинку. Если требуется создать фильм, то обрабатывается целая последовательность таких картинок — кадров. Как структура данных, изображение на экране представлено матрицей точек. Таким образом, процесс получения изображения преобразует трёхмерную векторную структуру данных в плоскую матрицу пикселов. Этот шаг часто требует очень сложных вычислений, особенно если требуется создать иллюзию реальности. При работе с трехмерной графикой используется несколько видов систем координат. Для отображения двумерных объектов использовалась соответствующая система координат с двумя осями – горизонтальной осью X и вертикальной осью Y. Экранная система координат для двумерной графики имеет начало (точку 0,0) в левом верхнем углу монитора, положительная часть оси X располагается справа от начала координат, положительная часть оси Y – снизу. Для работы с трехмерными объектами необходима еще одна ось – ось Z (рис.2). Существует несколько вариантов трехмерных систем координат, в частности, распространены так называемые правосторонняя и левосторонняя системы. Рисунок 2 Особенность этой системы координат заключается в том, что начало координат можно сопоставить с левым нижним углом монитора, положительная часть оси X находится справа от начала координат, положительная часть оси Y – сверху, а положительная часть оси Z – спереди. А это значит, что видимая часть оси Z – это её отрицательная часть. Эта часть оси находится как бы «в глубине монитора», в то время как положительная часть находится «спереди монитора». В двумерной системе координат существует понятие точки – ее координаты задаются двумя значениями – X и Y. Точки существуют и в трехмерной системе координат – они задаются уже тремя значениями – X, Y, Z. Точки используют для того, чтобы задавать координаты вершин многоугольников (полигонов), в частности – треугольников. Так, треугольник, задан тремя точками – A, B, C. Как правило, более сложные трехмерные объекты строятся именно из треугольников. В трехмерной графике существует такое понятие, как грань. Это – плоский объект, который определяют несколько вершин. Обычный треугольник – это именно грань. Из нескольких плоских граней можно собрать объемный объект. Чем больше треугольников использовано при построении модели – тем более детализированной и сложной она получается. Точки, соответствующие вершинам треугольника, который можно изобразить в трехмерном пространстве, называются вершинами. Треугольник не случайно выбран в качестве базовой геометрической фигуры – во-первых – этот многоугольник всегда является выпуклым, во-вторых – невозможно расположить три точки, не лежащие на одной прямой таким образом, чтобы они не принадлежали одной плоскости. Таким образом , треугольник – это фигура, которая всегда является выпуклой и плоской, что позволяет с успехом использовать его в целях трехмерной графики. Несколько граней, из которых состоит трехмерный объект, называются сеткой. "Сетка" представляет собой набор треугольников. Еще одно понятие, важное при работе с трехмерной графикой – это понятие вектора. Вектор, так же как и точка, может быть определен тремя параметрами, однако он описывает не положение в пространстве, а направление и скорость движения. Вектор имеет начало и конец, для его полного определения нужно знать координаты точки начала и конца вектора, таким образом, вместо трех значений координат понадобится уже шесть значений. Однако если по умолчанию принять за начало вектора начало координат (точку 0,0,0) – тогда для его определения будет достаточно трех точек. Направление вектора определяется положением второй точки от носительно первой (в данном случае – положение точки конца вектора, которой задается вектор относительно начала координат), а скорость – длиной вектора – разницей между начальной и конечной точкой. Существует особый вид векторов – нормали. Нормали могут быть построены для граней и для вершин объекта. Нормали для граней перпендикулярны этим граням. Они используются при расчете цвета объекта и исключения нелицевых граней. В трёхмерной компьютерной графике все объекты обычно представляются как набор поверхностей или частиц. Минимальную поверхность (некоторую плоскость, ограниченную набором точек и ребер) иногда называют полигоном. Любой полигон можно представить в виде набора из координат его вершин. Так, у треугольника будет 3 вершины. Координаты каждой вершины представляют собой вектор (x, y, z). Умножив вектор на соответствующую матрицу, мы получим новый вектор. Сделав такое преобразование со всеми вершинами полигона, получим новый полигон, а преобразовав все полигоны, получим новый объект, повёрнутый/сдвинутый/масштабированный относительно исходного. Любое изображение на мониторе, в силу его плоскости, становится растровым, так как любое изображение на экране дисплея представляет собой матрицу , состо ящую из столбцов и строк. Трёхмерная графика , иллюзия объема существует лишь в воображении человека , так изображение на мониторе — это проекция трёхмерной фигуры. Таким образом, визуализация графики бывает только растровая и векторная, а способ визуализации это только растр (набор пикселей), а от количества этих пикселей зависит способ задания изображения. Организация процесса построения проекции. Проволочная модель Следующей задачей при выводе 3D графики на экран является преобразование трех координат в две, т.к. на экран мы можем вывести лишь 2 координаты. 3D объект наиболее просто представить в виде совокупности точек, комбинируя которые в пары или по тройкам, можно в дальнейшем получать соответственно "проволочные модели" или "полигонные модели". Для вывода на экран структуры объекта, можно будет воспользоваться следующими известными формулами: Yt = Y * COS(Xan) - Z * SIN(Xan) Zt = Y * SIN(Xan) + Z * COS(Xan) Y = Yt Z = Zt Xt = X * COS(Yan) - Z * SIN(Yan) Zt = X * SIN(Yan) + Z * COS(Yan) X = Xt Z = Zt Xt = X * COS(Zan) - Y * SIN(Zan) Yt = X * SIN(Zan) + Y * COS(Zan) X = Xt <-- выводим Y = Yt <-- выводим Фактически для каждой точки мы должны вычислить X и Y, и вывести на экран. В случае построения полигональных моделей третья координа та необходима только для отсечения нелицевых граней. Отсечение н елицевых граней Основной задачей при построении полноценного изображения является построение проекции на экран. Предположим, имеется некоторая модель, расположение вершин в пространстве которой заведомо известно . Для того чтобы вывести полноценный трехмерный объект на экран мы должны изобразить все его видимые грани. Для этого необходимо определить , какие из них находятся ближе к наблюдателю, а какие выпадают из поля зрения исключить их из процесса отрисовки, сэкономив при этом ресурсы системы. Один из самых быстрых способов проверки основан на определении направления нормали к грани. Нормаль — это прямая, ортогональная (перпендикулярная) касательной прямой к некоторой кривой или касательной плоскости к некоторой поверхности (рис.3). Большое значение при построении объектов имеет не сама нормаль, а ее вектор. Рисунок 3 Вектором нормали к поверхности в данной точке является вектор, приложенный к данной точке и параллельный направлению нормали. Для каждой точки гладкой поверхности можно задать два нормальных вектора, отличающихся направлением. Если на поверхности можно задать непрерывное поле нормальных векторов, то говорят, что это поле задает ориентацию поверхности (то есть выделяет одну из сторон), а если же этого сделать нельзя, поверхность называют неориентируемой. Предположим, существует объект, внутри которого камера (позиция наблюдателя) заведомо не окажется. Обычно такого рода объекты составляют большую часть или всю сцену. Тогда для каждой грани наблюдатель способен увидеть только одну ее сторону - лицевую. Грань - плоскость, она делит все 3D пространство на два полупространства. Таким образом, лицевую сторону видно только из одного полупространства, из того, в которое "смотрит" нормаль к этой грани, направленная из объекта. Проверив, в какое полупространство попадает камера, можно сразу определить, является ли грань лицевой (то есть, может ли камера увидеть лицевую сторону этой грани) и надо ли ее рисовать. Пусть грань имеет вершины v1, v2, v3 и нормаль (nx,ny,nz). Тогда уравнение плоскости, в которой она лежит, будет иметь вид nx*x+ny*y+nz*z+d = 0. d находим из того факта, что v1 в плоскости лежит: nx*v1.x+ny*v1.y+nz*v1.z+d = 0, d = -(nx*v1.x+ny*v1.y+nz*v1.z). Функция nx*x+ny*y+nz*z+d принимает положительные значения по одну сторону от плоскости, отрицательные по другую и равна нулю на самой плоскости. Точка (v1.x+nx,v1.y+ny,v1.z+nz) лежит, очевидно, в том полупространстве, откуда грань видно. Значение функции (назовем ее функцией видимости) в этой точке равно nx*(v1.x+nx)+ny*(v1.y+ny)+nz*(v1.z+nz)+d = nx*(v1.x+nx)+ny*(v1.y+ny)+nz*(v1.z+nz)-(nx*v1.x+ny*v1.y+nz*v1.z) = nx*nx+ny*ny+nz*nz > 0. Таким образом, если значение функции в какой-то точке больше нуля, то грань из этой точки потенциально видна. Для построения изображение важен факт видимость грани из позиции камеры, а камера зафиксирована в точке (0,0,-dist). Таким образом, получаем, что грани, для которых - nz * dist -( nx * v 1. x + ny * v 1. y + nz * v 1. z ) < 0, или, что равносильно, nz*dist+nx*v1.x+ny*v1.y+nz*v1.z > 0, заведомо не видны и вре мя на их обработку и отображение тратить не стоит. Отдельно го рассмотрения требует вопрос рас чет а нормали к граням. Точнее, как выбрать одну из двух нормалей, смотрящую из объекта. Обычно эта проблема решается еще на этапе построения 3D моделей - некоторые пакеты для 3 D -моделирования заранее записывают вершины граней в порядке A-B-C так, чтобы векторное произведение BA*CA и было нормалью. Еще один способ - выбрать внутреннюю точку для объекта (либо вручную, либо взять его центр тяжести, либо любым другим способом - методов может быть придумано сколь угодно) и использовать ее: если для этой точки функция видимости положительна, то есть грань якобы видна, то необходимо поменять знак nx, ny и nz. Рассмотрев метод , следует отме тить, что для выпуклых объектов этот метод полностью решает задачу об удалении невидимых частей. Для невыпуклых же он позволяет быстро и просто сократить число граней, подлежащих дальнейшей проверке на видимость и, собственно, отрисовке. Вращение Вращение объекта в основном является изменением координат вершин, т.е. фактически заданием новых координат. В данном случае его можно реализовать довольно простым методом – вычислением новых координат, зная величину угла поворота, что сводится к решению ряда тривиальных тригонометрических задач. Рассмотрим для примера поворот точки (x,y,z) относительно оси z. В этом случае z не изменяется вовсе, а (x,y) из меняются так же, как и при повороте на плоскости относите льно начала координат. Рассмотрим, какие координаты получит точки A' в результате поворота A(x,y) на некоторый угол б . Рисунок 4 Пусть Пусть угол AOx равен
1Архитектура и строительство
2Астрономия, авиация, космонавтика
 
3Безопасность жизнедеятельности
4Биология
 
5Военная кафедра, гражданская оборона
 
6География, экономическая география
7Геология и геодезия
8Государственное регулирование и налоги
 
9Естествознание
 
10Журналистика
 
11Законодательство и право
12Адвокатура
13Административное право
14Арбитражное процессуальное право
15Банковское право
16Государство и право
17Гражданское право и процесс
18Жилищное право
19Законодательство зарубежных стран
20Земельное право
21Конституционное право
22Конституционное право зарубежных стран
23Международное право
24Муниципальное право
25Налоговое право
26Римское право
27Семейное право
28Таможенное право
29Трудовое право
30Уголовное право и процесс
31Финансовое право
32Хозяйственное право
33Экологическое право
34Юриспруденция
 
35Иностранные языки
36Информатика, информационные технологии
37Базы данных
38Компьютерные сети
39Программирование
40Искусство и культура
41Краеведение
42Культурология
43Музыка
44История
45Биографии
46Историческая личность
47Литература
 
48Маркетинг и реклама
49Математика
50Медицина и здоровье
51Менеджмент
52Антикризисное управление
53Делопроизводство и документооборот
54Логистика
 
55Педагогика
56Политология
57Правоохранительные органы
58Криминалистика и криминология
59Прочее
60Психология
61Юридическая психология
 
62Радиоэлектроника
63Религия
 
64Сельское хозяйство и землепользование
65Социология
66Страхование
 
67Технологии
68Материаловедение
69Машиностроение
70Металлургия
71Транспорт
72Туризм
 
73Физика
74Физкультура и спорт
75Философия
 
76Химия
 
77Экология, охрана природы
78Экономика и финансы
79Анализ хозяйственной деятельности
80Банковское дело и кредитование
81Биржевое дело
82Бухгалтерский учет и аудит
83История экономических учений
84Международные отношения
85Предпринимательство, бизнес, микроэкономика
86Финансы
87Ценные бумаги и фондовый рынок
88Экономика предприятия
89Экономико-математическое моделирование
90Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
Парень – девушке: - Может, перейдем на ты?
- А Вы не слишком торопите события? Лучше подайте мне бюстгальтер…
- А где он?
- На полу, под Вашими трусами…
Anekdot.ru

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

Обратите внимание, курсовая по программированию "Программирование в Pascal. Моделирование 3D-объектов", также как и все другие рефераты, курсовые, дипломные и другие работы вы можете скачать бесплатно.

Смотрите также:


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2016
Рейтинг@Mail.ru