Главная страница

Курсовой проект 106 страниц, 42 рисунка, 2 таблицы, 18 фомул, 15 матриц, 4 приложения


Скачать 5.65 Mb.
НазваниеКурсовой проект 106 страниц, 42 рисунка, 2 таблицы, 18 фомул, 15 матриц, 4 приложения
АнкорKursach.doc
Дата17.08.2018
Размер5.65 Mb.
Формат файлаdoc
Имя файлаKursach.doc
ТипКурсовой проект
#23097
страница1 из 10
  1   2   3   4   5   6   7   8   9   10




РЕФЕРАТ

Курсовой проект: 106 страниц, 42 рисунка, 2 таблицы, 18 фомул, 15 матриц, 4 приложения.


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

На данном этапе разработки реализуемый программный продукт может применяться для демонстрации возможностей графической библиотеки OpenGL, а в случае его усовершенствования, может быть использован в качестве программы для моделирования несложных 3D-объектов. Это станет возможным при наличии в программе возможности создания любых базовых графических примитивов и их модификаций, а также при наличии различных эффектов (например, затенения, отражения и пр.) и нескольких видов проецирования.

ПРОГРАММА, МОДЕЛЬ, АЛГОРИТМ, ГРАНЬ, РЕБРО, МАТРИЦА, АФИННЫЕ ПРЕОБРАЗОВАНИЯ, ОДНОРОДНЫЕ КООРДИНАТЫ, ГРАФИЧЕСКАЯ БАЗА ДАННЫХ, ИНТЕРФЕЙС, ИНТЕРАКТИВНОСТЬ

















ДО80404.1.01.08/086.КП






















Фамилия

Под.

Дата

Разраб.

Билык Н.О.







Система трехмерного графического моделирования на основе библиотеки OpenGL. Параметрическая модель сложного трехмерного объекта : « робот-краб»

Литера

Лист

Листов

Рук. Пр.

Ручкин К.А.










у




3

80

Консульт.

Пчелкин В.Н.







ГУИИИ

каф. СИИ

Н. контроль

Пчелкин В.Н.







Зав. каф.

Вороной С.М.










СОДЕРЖАНИЕ







Введение

7




1 Постановка задачи

8




1.1 Цель создания

8




1.2 Область применения

8




1.3 Актуальность разработки

8




1.4 Постановка задачи

8




1.5 Сравнительный анализ существующих графических библиотек

9




1.5.1 Библиотека Microsoft DirectX

9




1.5.2 Пакет графического моделирования OpenGL

9




2 Обоснование использования OpenGL

10




3 Анализ графических и геометрических методов

11




3.1 Системы координат

11




3.1.1 Декартова система координат

11




3.1.2 Векторная система координат

12




3.1.3 Аффинная система координат

12




3.1.4 Однородные координаты точки

12




3.2 Аффинные преобразования в пространстве

13




3.2.1 Преобразование переноса

13




3.2.2 Преобразование поворота

14




3.2.3 Преобразование масштабирования

15




3.2.4 Преобразования отражения

16




3.2.5 Преобразования сдвига

16




3.3 Проецирование. Виды проецирования

17




3.3.1 Параллельное ортографическое проецирование

18




3.3.2 Изометрическое проецирование

19




3.3.3 Диметрическая проекция

20




3.4 Модели представления объектов

20




3.5 Управление камерой

21




3.5.1 Мировая и локальная системы координат

21




3.5.2 Модель камеры

21




3.5.3 Типичные преобразования капер

22




3.6 Методы удаления невидимых граней

22




3.6.1 Алгоритм Z-буфера

22




3.6.2 Алгоритм художника

23




3.7 Закраска граней

23




4 Описание геометрических моделей объектов

24




4.1 Геометрическая модель куба

24




Разработал

Фамилия

Подпись

Дата

ДО80404.1.01.08/086.КП

Лист




ст.гр. ИС-08а

Билык Н.О.







4






















4.2 Геометрическая модель сферы

25




4.3 Геометрическая модель полусферы

25




4.4 Геометрическая модель треугольной косоугольной призмы

26




4.5 Геометрическая модель призмы с треугольным основанием

27




4.6 Модель эллипсоида

27




4.7 Геометрическая модель косоугольного конуса

28




4.8 Геометрическая модель пирамиды с пятиугольным основанием

29




4.9 Геометрическая модель усечённой пирамиды с трёугольным основанием

30




4.10 Моделирование икосаэдра

31




4.11 Геометрическая модель додекаэдра

32




5 Построение геометрической и математической модели

34




5.1 Физическая модель

34




5.2 Параметрическая модель объекта

34




5.3 Построение примитивов

35




6 Описание программной реализации

38




6.1 Структуры данных для хранения параметрических объектов

38




6.2 Структуры данных для камеры

38




6.3 Структуры данных для источников света

39




6.4. Описание внутреннего формата графической БД

40




6.5 Описание формата файла хранения сцены

40




6.6 Описание программных моделей

40




6.7 Описание основных процедур и функций

41




6.8 Описание использованных функций OpenGL

42




6.9 Реализация аффинных преобразований

43




6.10 Описание структуры программы в виде блок-схемы

43




7 Проведение тестовых испытаний

45




Заключение

46




Список использованной литературы

47




Приложение А – Техническое задание

48




Приложение Б – Руководство пользователя

53




Приложение В – Экранные формы

56




Приложение Г – Листинг программы















Разработал

Фамилия

Подпись

Дата

ДО80404.1.01.08/086.КП

Лист




ст.гр. ИС-08а

Билык Н.О.







5






















перечень обозначений, символов, единиц

сокращений и терминов

MSMicrosoft

мб – мегабайт

ос – операционная система

ЭВМ – Электронно–вычислительная машина

БД – База данных

МСК – мировая система координат

ЛСК – локальная система координат




Разработал

Фамилия

Подпись

Дата

ДО80404.1.01.08/086.КП

Лист




ст.гр. ИС-08а

Билык Н.О.







6



















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

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

Данный курсовой проект – реализация основных операций, необходимых для работы с объемными изображениями. В нем реа­лизованы три ортогональных проекции и одна изометрическая, основные ви­довые операции и некоторые операции над объ­ектами. Всё это очень важно для познания методов представления 3D-графики и качественного и эффективного использования её в графическом и геометрическом моделировании в информационных системах.

1 ПОСТАНОВКА ЗАДАЧИ
1.1 Цель создания
Целью создания проекта является приобретение практических навыков трёхмерного графического моделирования, а так же разработка системы моделирования трехмерных сцен поддерживающей параметрические объекты и позволяющей производить простейшие преобразования над ними: перемещение, вращение, масштабирование, отражение, сдвиг.
1.2 Область применения
Данный проект может быть использован для демонстрации работы основных алгоритмов построения и визуализации трёхмерных моделей простейших геометрических объектов.
1.3 Актуальность разработки
Задача построения трёхмерных моделей решалась не раз. Примером этому могут служить такие известные пакеты как 3D Studio Max, Maya и AutoCAD. Безусловно, они предоставляют гораздо более широкий круг функциональных возможностей, чем данный проект, но в то же время для использования только в демонстрационных целях они занимают слишком много места на жестком диске и ресурсов системы.
1.4 Постановка задачи
Основной задачей разработки является разработка и реализация с помощью библиотеки OpenGL системы трехмерного графического моделирования, поддерживающей несколько типов параметрических объектов и видов проецирования, позволяющей просматривать композиции данных объектов с разных ракурсов и проводить их визуализацию с использованием различных методов.

Систему трехмерного графического моделирования должна обладать следующей функциональностью:
  • создание параметризованных 3D объектов и занесение их в графическую БД;


  • задание точных параметров объектов с клавиатуры;

  • выбор типа проецирования для видовой операции;

  • реализация типичных операций управления “камерой” при визуализации;

  • возможность редактирования и манипулирования объектами;

  • возможность сохранения сцены в файле.


1.5 Сравнительный анализ существующих графических библиотек

На современном этапе развития систем по обработке компьютерной графики существует несколько методов по визуализации на экране компьютера графических объектов. Рассмотрим три основных метода: программный, использование библиотеки OpenGL и библиотеки DirectX.
1.5.1 Библиотека Microsoft DirectX
Библиотека Microsoft DirectX является наиболее динамично развивающейся и полнофункциональной.

Ее преимущества:

- поддержка со стороны операционной системы Microsoft Windows;

- набор методов DirectInput, DirectPlay, DirectSound, DirectDraw, позволяющих не только выводить графику, но и обрабатывать ввод данных со стороны пользователя, обрабатывать звуковую информацию, а также производить обмен данными по компьютерной сети.

- Основными недостатками этой библиотеки являются:

моноплатформенность;

- не очень сильная аппаратная поддержка со стороны графических процессоров;

- абсолютная коммерциализация всех продуктов корпорации Microsoft.

1.5.2 Пакет графического моделирования OpenGL
Библиотека OpenGL представляет собой интерфейс программирования трехмерной графики. Единицей информации является вершина, из них состоят более сложные объекты. Программист создает вершины, указывает как их соединять (линиями или многоугольниками), устанавливает координаты и параметры камеры и ламп, а библиотека OpenGL берет на себя работу создания изображения на экране.. Используя OpenGL легко создать трехмерные поверхности, наложить на них текстуры, осветить источниками света, сделать эффект тумана, прозрачности, смешивания цветов, а также наложить трафарет, передвигать объекты сцены, лампы и камеры по заданным траекториям, сделав, тем самым, анимацию. Для работы с устройствами ввода, такими как клавиатура или мышь, можно задействовать функции конкретной операционной системы, под которую пишется программа, или воспользоваться надстройками над OpenGL, такими как библиотеки GLUT или GLAUX.

В различных видеокартах по разному реализованы функции по обработке данных. Часть из них лучше работает с интерфейсом OpenGL, часть – DirectX. Большинство производителей видеокарт обеспечивают аппаратную поддержку как можно большего числа функций. Но, так как спецификация библиотеки OpenGL абсолютно открыта, то реализация чисто OpenGL-алгоритмов часто оказывается лучше, чем алгоритмов DirectX.
2 ОБОСНОВАНИЕ ИСПОЛЬЗОВАНИЯ OPENGL

Графический стандарт OpenGL, разработан и утвержден в 1992 году девятью ведущими фирмами, среди которых Digital Equipment Corporation, Evans & Sutherland, Hewlett–Packard Co., IBM Corp., Intel Corp., Intergraph Corp., Silicon Graphics, Inc., Sun Microsystems Inc. В осно­ву стандарта была положена библиотека IRIS GL, разработанная Silicon Graphics. Это достаточно простая в изучении и использовании графическая система, обладающая при этом поразительно широкими возможностями. Вот только некоторые из ее достоинств:


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

- Надежность. Все приложения, использующие OpenGL, гарантируют оди­наковый визуальный результат вне зависимости от используемого обору­дования и операционной системы.

- Переносимость. Для запуска OpenGL-приложения необходима лишь его компиляция под конкретную платформу без изменения OpegGL-части кода.

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

Альтернативой библиотеке OpenGL являются разработанные компанией Microsoft библиотеки DirectShow и DirectDraw, входящие в состав DirectX. В отличие от OpenGL DirectX не является свободно распространяемой библиотекой и не обеспечивает переносимости приложений, т.к. разработана исключительно для операционных систем Microsoft Windows.

3 АНАЛИЗ ГРАФИЧЕСКИХ И ГЕОМЕТРИЧЕСКИХ МЕТОДОВ
3.1 Системы координат
3.1.1 Декартова система координат
Прямоугольная, или Декартова система координат — наиболее простая и поэтому часто используемая система координат в пространстве.

Прямоугольная система координат в пространстве образуется тремя взаимно перпендикулярными осями координат OX, OY и OZ. Оси координат пересекаются в точке O, которая называется началом координат, на каждой оси выбрано положительное направление, указанное стрелками, и единица измерения отрезков на осях. Единицы измерения обычно одинаковы для всех осей (что не является обязательным). OX — ось абсцисс, OY — ось ординат, OZ — ось аппликат.

Если большой палец правой руки принять за направление X, указательный за направление Y, а средний за направление Z, то образуется правая система координат. Аналогичными пальцами левой руки образуется левая система координат. Иначе говоря, положительное направление осей выбирают так, чтобы при повороте оси OX против часовой стрелки на 90° её положительное направление совпало с положительным направлением оси OY, если этот поворот наблюдать со стороны положительного направления оси OZ. Правую и левую системы координат невозможно совместить так, чтобы совпали соответствующие оси (см. рис. 3.1).



Рисунок 3.1. Декартова система координат
Положение точки A в пространстве определяется тремя координатами x, y и z. Координата x равна длине отрезка OB, координата y — длине отрезка OC, координата z — длине отрезка OD в выбранных единицах измерения. Отрезки OB, OC и OD определяются плоскостями, проведёнными из точки A параллельно плоскостям YOZ, XOZ и XOY соответственно. Координата x называется абсциссой точки A, координата y — ординатой точки A, координата z — аппликатой точки A. Записывают так: A(x,y,z).

3.1.2 Векторная система координат
Для векторной системы координат, как и для декартовой, характерно задание прямых, направлений и единичных отрезков, но в отличие от декартовой, в ней устанавливает взаимно однозначное соответствие между векторами пространства и упорядоченными тройками действительных чисел, а не между числами и точкой. Любой вектор р заданный тройкой чисел представляет собой направленный отрезок исходящий из точки O в точку Р.

Векторная система координат показана на рисунке 3.2.



Рисунок 3.2 - Векторная система координат

3.1.3. Аффинная система координат
Аффинная система координат является объединением декартовой и векторной систем координат и устанавливает взаимно однозначное соответствие между точками, векторами пространства и упорядоченными тройками действительных чисел.
3.1.4 Однородные координаты точки
Для n-мерного пространства в одно­родных координатах вершины всегда задаются n+1 координатами. Основное удобство применения одно­родных координат заключается в том, что с их помощью все виды преобразований координат могут быть представлены в единой форме. Они были введены в геометрии и впоследст­вии использованы в графике. В однородных координатах положение точки Р(х, у, z) записывается как P(W*x, W*y, W*z, W) или P(X, Y, Z, W), для лю­бого масштабного множителя, причем трехмерные декартовы координаты легко определяются:

х = X/W; у = Y/W; z = Z/W (3.1)
То есть привычная для нас ортогональная система координат получается как проекция однородной системы на плоскость W = 1.

Таким образом для преобразования точки из обычных координат в однородные нужно добавить компоненту равную 1 и умножить все компоненты на любое вещественное число. Для преобразования точки из однородных координат в обычные координаты разделите все компоненты на последний компонент и отбросьте его.
3.2 Аффинные преобразования в пространстве
Аффинные преобразования - это комбинация линейных преобразований, переводящие параллельные прямые в параллель­ные, скрещивающиеся в скрещивающиеся и сохраняющие величину отношения длин отрезков параллельных прямых. Они допускают компактное матричное представление. Аффинные преобразования в однородных координатах описываются матрицами 4*4. Пусть есть некоторая точка P и некоторое аффинное преобразование, которому соответствует матрица М. Тогда результирующая точка P’ для данного аффинного преобразования и данной точки может быть вычислена по формуле:

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

Перенос точки Р на вектор (x,y,z) осуществляется при помощи умножения вектора координат точки Р на матрицу переноса. Матрица переноса имеет вид:

(3.1)
Перенос точки Р в точку Р’ показан на рисунке 3.3.

Рисунок 3.3 – Перенос точки Р в точку Р’
3.2.2 Преобразования поворота

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


Вокруг оси ординат: (3.3)

Вокруг оси аппликат: (3.4)
На рисунке 3.4 приведены три основных положительных поворота.


Рисунок 3.4 – Положительные повороты вокруг осей
3.2.3 Преобразования масштаба
Масштабирование изменяет размер фигуры и использует три масштабных множителя — Sx , Sy и Sz для координат x, у и zсоответственно.

Более строго такой способ масштабирования называется масштабированием относительно начала отсчета, поскольку каждая точка передвигается в Sx раз дальше от начала отсчета в направлении х, в Syраз дальше от начала отсчета в направлении y и в Sz раз дальше от начала отсчета в направлении z. Матрица масштабирования имеет вид:
( 3.5)
3.2.4 Преобразования отражения
Если масштабный множитель отрицателен и равен 1, то происходит отражение относительно координатных плоскостей. Матрицы отражения относительно плоскостей YОZ, XОZ и XОY имеют вид:
(3.6);
(3.7);

(3.8);
На рисунке 3.5 приведен пример отражения точки А относительно плоскости XОY.


  1   2   3   4   5   6   7   8   9   10


написать администратору сайта