Разработка приложения с использованием OpenGL для построения динамического изображения трехмерной модели объекта "Батискаф"

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



GL_FOG_COLORв этом случае params - указатель на массив из 4-х компонент цвета.

2. РАЗРАБОТКА ПРИЛОЖЕНИЯ ДЛЯ ПОСТОРОЕНИЯ ДИНАМИЧЕСКОГО ИЗОБРАЖЕНИЯ ТРЕХМЕРНОЙ МОДЕЛИ ОБЪЕКТА "БАТИСКАФ"

.1 Разработка процедуры визуализации трехмерной iены

За прорисовку паровоза отсвечает метод void CLr1View::OnDraw(CDC* pDC). Вся модель состоит из довольно большого числа примитивов, таких как цилиндр, конус, прямоугольник, сфера.

Первым рисуем сферу диаметром 0,9 - корпус Батискафа, после нее -2 квадрик цилиндра - подставки Батискафа, после - 2 бокса - крепление подставок, все эти фигуры совмещаем нужным образом, делаем это при помощи функции "glTranslated". Затем рисуем заднюю часть Батискафа с помощью цилиндра с параметрами (quadric, 0.1, 0.6, 0.4, 16,40), вертикальные крыло - auxSolidBox(0.05,1.3,0.4), auxSolidBox(0.05,0.5,0.4), защита лопастей - gluCylinder (quadric, 0.3, 0.3, 0.07, 16,40). Следующей деталью является горизонтальное крыло которое рисуется по точкам с помощью функции - glBegin (GL_POLYGON) параметрами которой являются точки с координатами - glVertex3f(0.0,0.25,0.05). Далее дорисоввываем мелкие детали auxSolidBox(0.05,1.3,0.4), 4 сферы - auxSolidSphere(0.1). Теперь приступим к прорисовки боковых силовых установок состоящих из крепления - gluCylinder (quadric, 0.02, 0.02, 1.9, 16,40), gluCylinder (quadric, 0.03, 0.03, 0.1, 16,40), gluCylinder (quadric, 0.07, 0.07, 0.05, 16,40), защиты лопастей - auxSolidSphere(0.03), и мелких деталейтАж В конце рисуем лопасти силовой установки с помощью - gluPartialDisk(quadObj,0,0.25,50,20,0,50).

Вот собственно и вся модель. Весь код метода представлен в Приложении Б, а алгоритм построения трехмерного объекта "Батискаф" средствами OPENGL, в Приложении В.

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

Все необходимые операции производились теми же функциями glTranslated, glRotated.

Вот собственно и вся модель. Весь код метода представлен в Приложении Б, а алгоритм построения трехмерного объекта "Паровоз" средствами OPENGL, в Приложении А.

.2 Разработка интерфейса пользователя

Для данной программы разработан интерфейс, позволяющий:

-включать и выключать эффект тумана;

-выбрать цвет тумана;

-выбирать тип тумана;

-вращать батискаф;

-задавать цвет деталей батискафа;

-вкл/выкл текстуру воды;

-выбирать тип полигонов;

-выбирать несколько источников света;

-задавать скорость вращения лопастей и скорость погружения;

-выбирать тип и задавать параметры перспективы;

-вращать и поворачивать iену цифровой клавиатурой;

-приближать и удалять объект с помощью мышки.

В главном меню добавлены пункты:

-"Погружение" - погружение батискафа (предварительно нужно задать скорость вращения лопастей и скорость погружения в пункте настройки).

-"Настройки" - различные настройки всей iены (Рисунок Г.2).

2.3 Разработка подсистемы управления событиями

Любое windows-положение основано на событиях и их обработке, другими словами поведение программы управляется событиями. Данный проект тоже является windows приложением, и, следовательно, обработка событий занимает важное место. К основным событиям, играющим важную, для корректной работы программы, роль относятся следующие:

-WM_DESTROY - освобождение занятых ресурсов;

-WM_SIZE - изменения iены относительно размеров окна;

-WM_ERASEBKGND - предотвращения мерцания;

-WM_TIMER - используется для создания таймера;

-WM_MOUSEWHEEL - обработка вращения колеса мышки;

-WM_KEYDOWN - обработка нажатия клавиши;

-COMMAND(ID_PERSP, CKarkasView::OnPersp ()) - обработка события при вызове окна настройки перспективы;

-COMMAND(ID_OPTIONS, CKarkasView::OnOptions ()) - обработка события при вызове окна настройки типа вращения и скорости движения объекта;

-COMMAND(ID_VIEW_1, CKarkasView::OnView1())- обработка события выбора типа тумана;

-COMMAND(ID_VIEW_SBROS, CKarkasView:: OnVewSbros()) - обработка события нажатия кнопки "Убрать туман";

-COMMAND (ID_VIEW_MOVE, CKarkasView::OnMove ()) - обработка нажатия кнопки "Погружение".

3. ИНФОРМАЦИОННОЕ И ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

3.1 Общие сведения о программе

Программа называется "Трехмерная модель Батискаф". При работе с данной программой у пользователя есть возможность работать с визуальной моделью данного объекта.

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

Программное обеспечение, на котором разработана приложение - Microsoft Visual С++ 6.0.

3.2 Функциональное назначение

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

-наблюдать модель

-включать и выключать эффект тумана;

-выбрать цвет тумана;

-выбирать тип тумана;

-вращать батискаф;

-задавать цв