Разработка приложения с использованием 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 Функциональное назначение
Данная программа предназначается для представления трехмерной модели батискафа. Приложение дает следующие возможности:
-наблюдать модель
-включать и выключать эффект тумана;
-выбрать цвет тумана;
-выбирать тип тумана;
-вращать батискаф;
-задавать цв