Визуализатор алгоритмов с применением трехмерной графики

Общее описание разрабатываемого приложения, его актуальность и сферы практического применения. Выбор среды разработки и языка программирования, 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.