Визуализатор алгоритмов с применением трехмерной графики
Общее описание разрабатываемого приложения, его актуальность и сферы практического применения. Выбор среды разработки и языка программирования, 3D-движка. Архитектура приложения, интерфейса и его главных элементов, взаимодействие с пользователем.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 10.07.2017 |
Размер файла | 317,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
gui.cam2->subscribeEvent (CEGUI: PushButton: EventClicked, CEGUI: Event: Subscriber (&MainApp:cam2, this));
gui.cam3->subscribeEvent (CEGUI: PushButton: EventClicked, CEGUI: Event: Subscriber (&MainApp:cam3, this));
gui.cam4->subscribeEvent (CEGUI: PushButton: EventClicked, CEGUI: Event: Subscriber (&MainApp:cam4, this));
gui.algoOff->subscribeEvent (CEGUI: PushButton: EventClicked, CEGUI: Event: Subscriber (&MainApp:algoOff, this));
gui.algoL->subscribeEvent (CEGUI: PushButton: EventClicked, CEGUI: Event: Subscriber (&MainApp:algoL, this));
gui.algoR->subscribeEvent (CEGUI: PushButton: EventClicked, CEGUI: Event: Subscriber (&MainApp:algoR, this));
gui.listOk->subscribeEvent (CEGUI: PushButton: EventClicked, CEGUI: Event: Subscriber (&MainApp:listOk, this));
gui.listAuto->subscribeEvent (CEGUI: PushButton: EventClicked, CEGUI: Event: Subscriber (&MainApp:listAuto, this));
gui.stepStop->subscribeEvent (CEGUI: PushButton: EventClicked, CEGUI: Event: Subscriber (&MainApp:stepStop, this));
gui.stepPlay->subscribeEvent (CEGUI: PushButton: EventClicked, CEGUI: Event: Subscriber (&MainApp:stepPlay, this));
gui.stepPause->subscribeEvent (CEGUI: PushButton: EventClicked, CEGUI: Event: Subscriber (&MainApp:stepPause, this));
gui.stepLast->subscribeEvent (CEGUI: PushButton: EventClicked, CEGUI: Event: Subscriber (&MainApp:stepLast, this));
gui.stepNext->subscribeEvent (CEGUI: PushButton: EventClicked, CEGUI: Event: Subscriber (&MainApp:stepNext, this));
gui.speedOn->subscribeEvent (CEGUI: PushButton: EventClicked, CEGUI: Event: Subscriber (&MainApp:speedOn, this));
gui.speedOff->subscribeEvent (CEGUI: PushButton: EventClicked, CEGUI: Event: Subscriber (&MainApp:speedOff, this));
gui.speedReportOk->subscribeEvent (CEGUI: PushButton: EventClicked, CEGUI: Event: Subscriber (&MainApp:speedReportOk, this));
gui.sceneOn->subscribeEvent (CEGUI: PushButton: EventClicked, CEGUI: Event: Subscriber (&MainApp:sceneOn, this));
gui.sceneOff->subscribeEvent (CEGUI: PushButton: EventClicked, CEGUI: Event: Subscriber (&MainApp:sceneOff, this));
gui.sky1->subscribeEvent (CEGUI: PushButton: EventClicked, CEGUI: Event: Subscriber (&MainApp:sky1, this));
gui.sky2->subscribeEvent (CEGUI: PushButton: EventClicked, CEGUI: Event: Subscriber (&MainApp:sky2, this));
gui.sky3->subscribeEvent (CEGUI: PushButton: EventClicked, CEGUI: Event: Subscriber (&MainApp:sky3, this));
gui.ground1->subscribeEvent (CEGUI: PushButton: EventClicked, CEGUI: Event: Subscriber (&MainApp:ground1, this));
gui.ground2->subscribeEvent (CEGUI: PushButton: EventClicked, CEGUI: Event: Subscriber (&MainApp:ground2, this));
gui.ground3->subscribeEvent (CEGUI: PushButton: EventClicked, CEGUI: Event: Subscriber (&MainApp:ground3, this));
gui.shadowOn->subscribeEvent (CEGUI: PushButton: EventClicked, CEGUI: Event: Subscriber (&MainApp:shadowOn, this));
gui.shadowOff->subscribeEvent (CEGUI: PushButton: EventClicked, CEGUI: Event: Subscriber (&MainApp:shadowOff, this));
}
bool MainApp:quit (const CEGUI: EventArgs &e)
{
mShutDown = true;
return true;
}
void MainApp:camMove(void)
{
switch (cam)
{
case 1:
camDefault();
break;
case 2:
camSetPosition (100, 900, 1800); // настроили position
mCamera->setDirection (-0.05, -0.5, -0.85); // rotate камеру
break;
case 3:
camSetPosition (700, 500, 1300); // настроили position
mCamera->setDirection (-0.4, -0.4, -0.8); // rotate камеру
break;
case 4:
camSetPosition (100, 300, 1700); // настроили position
mCamera->setDirection (-0.05, -0.2, -0.95); // rotate камеру
break;
default:
break;
}
}
void MainApp:camSetPosition (int x, int y, int z)
{
x += (listLength-1) * 60;
mCamera->setPosition (x, y, z); // настроили position
}
void MainApp:camDefault(void)
{
camSetPosition (-900, 200, 900); // настроили position
mCamera->setDirection (0.6, -0.3, -0.75); // rotate камеру
}
bool MainApp:cam1 (const CEGUI: EventArgs &e)
{
cam = 1;
camMove();
return true;
}
bool MainApp:cam2 (const CEGUI: EventArgs &e)
{
cam = 2;
camMove();
return true;
}
bool MainApp:cam3 (const CEGUI: EventArgs &e)
{
cam = 3;
camMove();
return true;
}
bool MainApp:cam4 (const CEGUI: EventArgs &e)
{
cam = 4;
camMove();
return true;
}
bool MainApp:listAuto (const CEGUI: EventArgs &e)
{
srand((unsigned) time(NULL));
int len = rand()%8 + 3; // length of list 3 to 10
vector<int> x2 (0); // empty list
for (int i=0; i<len; i++)
x2.push_back (rand()%15 + 1); // random 1 to 15
gui.listEdit->setText (ToString(x2));
return true;
}
bool MainApp:listOk (const CEGUI: EventArgs &e)
{
listCreate();
createSort();
return true;
}
void MainApp:listCreate(void)
{
vector<int> vecList = ToListInt (gui.listEdit->getText());
listLength = vecList.size(); // задали длину
int *x2 = new int[listLength]; // создали пустой список нужной длины
for (int i=0; i<listLength; i++)
{
if (vecList[i]==0)
vecList[i] = 1; // чтобы не показывать нулевое значение
x2 [i] = vecList[i]; // переносим числа из вектора в массив
}
algo.listStart = new int[listLength]; // собрали пустой список заданной длины
list = new ListMember[listLength];
listCube = new CubeMember[listLength]; // собрали пустой список кубиков
createListStart(x2); // собрали начальный список listStart
createListMember(x2); // создали список и построили кубики
createListCube(); // построили кубики
gui.listHide(); // спрятали ввод послед-ти
gui.algoShow(); // показали все для алгоритма
gui.listEdit->setText (ToString(vecList));
gui.speedList->setText (ToString(vecList));
vecList.clear(); // очищаем вектор
}
bool MainApp:algoOff (const CEGUI: EventArgs &e)
{
deleteListCube(); // чистим кубики на сцене
gui.listShow();
gui.speedHide();
gui.algoHide();
gui.speedReportLog->setText (ToRU(L»!!! Нажмите кнопку Создать для создания отчета о скорости работы алгоритмов!!!»));
gui.speedReportOk->enable();
return true;
}
bool MainApp:algoL (const CEGUI: EventArgs &e)
{
idSort -;
if (idSort<1) idSort = algo.algoSum;
createSort();
return true;
}
bool MainApp:algoR (const CEGUI: EventArgs &e)
{
idSort++;
if (idSort>algo.algoSum) idSort = 1;
createSort();
return true;
}
void MainApp:timerOn(void)
{
timerPoint = 0;
timerEnabled = true;
}
void MainApp:timerOff(void)
{
timerEnabled = false;
}
bool MainApp:stepStop (const CEGUI: EventArgs &e)
{
stopStep();
return true;
}
bool MainApp:stepPlay (const CEGUI: EventArgs &e)
{
timerOn();
gui.stepEnablePlay();
return true;
}
bool MainApp:stepPause (const CEGUI: EventArgs &e)
{
timerOff();
gui.stepEnablePause();
return true;
}
bool MainApp:stepLast (const CEGUI: EventArgs &e)
{
lastStep();
if (step == 0)
{
gui.stepEnableBegin();
} else {
gui.stepEnablePause();
}
return true;
}
bool MainApp:stepNext (const CEGUI: EventArgs &e)
{
nextStep();
if (step == algo.stepSum)
{
gui.stepEnableEnd();
} else {
gui.stepEnablePause();
}
return true;
}
bool MainApp:speedOn (const CEGUI: EventArgs &e)
{
gui.speedShow();
return true;
}
bool MainApp:speedOff (const CEGUI: EventArgs &e)
{
gui.speedHide();
return true;
}
bool MainApp:speedReportOk (const CEGUI: EventArgs &e)
{
CEGUI: String report = ToRU (L «Скорость работы алгоритмов: \n»);
vector<string> operList;
for (int i=0; i<algo.algoSum; i++)
{
algo.logOn = false; // выключили логирование в алго
algo.createOperationList (listLength, i+1);
operList = algo.vec;
report += algo.algoName[i];
report += «-»;
report += ToString (operList.size());
report += ToRU (L» нс \n»);
operList.clear();
}
gui.speedReportLog->setText(report); // показали репорт
gui.speedReportOk->disable(); // кнопка больше не активна
return true;
}
bool MainApp:sceneOn (const CEGUI: EventArgs &e)
{
gui.sceneShow();
return true;
}
bool MainApp:sceneOff (const CEGUI: EventArgs &e)
{
gui.sceneHide();
return true;
}
bool MainApp:sky1 (const CEGUI: EventArgs &e)
{
mSceneMgr->setSkyBox (true, «Examples/MorningSkyBox», 300);
return true;
}
bool MainApp:sky2 (const CEGUI: EventArgs &e)
{
mSceneMgr->setSkyBox (true, «Examples/SpaceSkyBox», 300);
return true;
}
bool MainApp:sky3 (const CEGUI: EventArgs &e)
{
mSceneMgr->setSkyBox (true, «Examples/StormySkyBox», 300);
return true;
}
bool MainApp:ground1 (const CEGUI: EventArgs &e)
{
groundEntity->setMaterialName («Examples/Asphalt1»); // залили землю материалом
return true;
}
bool MainApp:ground2 (const CEGUI: EventArgs &e)
{
groundEntity->setMaterialName («Examples/GrassFloor»); // залили землю материалом
return true;
}
bool MainApp:ground3 (const CEGUI: EventArgs &e)
{
groundEntity->setMaterialName («Examples/MramorCM»); // залили землю материалом
return true;
}
bool MainApp:shadowOn (const CEGUI: EventArgs &e)
{
shadow = true;
setShadow();
return true;
}
bool MainApp:shadowOff (const CEGUI: EventArgs &e)
{
shadow = false;
setShadow();
return true;
}
#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
#define WIN32_LEAN_AND_MEAN
#include «windows.h»
#endif
#ifdef __cplusplus
extern «C» {
#endif
#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
INT WINAPI WinMain (HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT)
#else
int main (int argc, char *argv[])
#endif
{
// Create application object
MainApp app;
try {
app.go();
} catch (Ogre: Exception& e) {
#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
MessageBox (NULL, e.getFullDescription().c_str(), «An exception has occurred!», MB_OK | MB_ICONERROR | MB_TASKMODAL);
#else
std:cerr << «An exception has occurred:» <<
e.getFullDescription().c_str() << std:endl;
#endif
}
return 0;
}
#ifdef __cplusplus
}
#endif
Размещено на Allbest.ru
Подобные документы
Общее описание разрабатываемого программного обеспечения, требования к его функциональности и сферы практического применения. Выбор инструментальных средств разработки. Проектирование структур баз данных и алгоритмов, пользовательского интерфейса.
дипломная работа [3,1 M], добавлен 19.01.2017Общая характеристика и структурная схема приложения, требования к нему и функциональные особенности, сферы практического применения. Обоснование выбора языка программирования. Описание интерфейса и инструкция пользователя. Проведение листинга программы.
дипломная работа [1,0 M], добавлен 10.07.2017Разработка адресных и технических требований к игре. Написание сценария. Общая концепция разработки приложения. Разработка схем алгоритмов приложения. Игровые технологии. Выбор среды и программированного языка. Описание пользовательского интерфейса.
курсовая работа [1,6 M], добавлен 14.06.2014Разработка программы создания заметок в любом месте компьютера. Выбор технологии, языка и среды разработки приложения. Описание основных алгоритмов работы программного обеспечения. Проектирование пользовательского интерфейса. Выбор стратегии тестирования.
отчет по практике [700,5 K], добавлен 24.11.2014Общая характеристика и анализ требований к разрабатываемому приложению, функциональные особенности и сферы практического применения. Проектирование базы данных и выбор системы управления ею. Тестирование приложения и выбор языка программирования.
дипломная работа [791,8 K], добавлен 10.07.2017Изучение основных алгоритмов генерации различных видов фракталов. Выбор языка и среды программирования. Характеристика структурных элементов растрового графического редактора фракталов. Описание интерфейса приложения, порядок редактирования изображений.
курсовая работа [1,2 M], добавлен 04.04.2014Использование библиотеки ОpеnGL с целью разработки программ для ОС семейства Windоws с применением технологий трехмерной графики. Прорисовка функциональных частей модели парусника, проектирование интерфейса пользователя и подсистемы управления событиями.
курсовая работа [747,0 K], добавлен 26.06.2011Анализ моделируемого приложения и постановка задачи. Диаграмма прецедентов, деятельности объектов и состояния классов. Разработка приложения-игры, выбор языка программирования и среды для разработки проекта, интерфейс приложения и ресурсы проекта.
курсовая работа [308,5 K], добавлен 14.10.2011Создание, изучение и разработка приложение на Android. Среда разработки приложения DelphiXE5. Установка и настройка среды программирования. Этапы разработки приложения. Инструменты для упрощения конструирования графического интерфейса пользователя.
курсовая работа [1,6 M], добавлен 19.04.2017Основные методы объектно-ориентированного программирования поисковой системы. Выбор языка программирования и среды разработки приложения. Реализация паттерна, использование принципа сохраняемости. Описание пользовательского интерфейса поисковой системы.
курсовая работа [781,4 K], добавлен 29.04.2015