Курсовая работа (т): Розробка програмного забезпечення для моделювання мобільного робота NXT MindStorms

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Курсова робота виконана відповідно до вимог стандартів [7,8].

Перелік посилань

1.          Цимбал О.М. Технології програмування: Visual C++. - Харків: ХНУРЕ, 2006. - 336 с.

2.          ГОСТ 27.204-83. Технологические системы. Технические требования к методам оценки надежности по параметрам производительности.

3.          Шилдт Герберт. MFC: основы программирования. - К.: Издательская группа BHV, 1997. - 560 с.

4.      Олафсен Ю., Скрайбнер К., Уайт К.Д. MFC и Visual C++ 6. Энциклопедия программиста. - СПб.: ООО „ДиаСофтЮП”, 2004. - 992 с.

.        OpenGL. Официальное руководство программиста: Пер. с англ. / Мейсон Ву, Джеки Нейдер, Том Девис, Дейв Шрайнер. - СПб: ООО «ДиаСофтЮП», 2002. - 592 с.

.        Тихомиров Ю.В. OpenGL. Программирование трехмерной графики.- СПб.: БХВ-Петербург, 2002. - 304 с.

7. ДСТУ 3008-95. Документація. Звіти в сфері науки і техніки. Структура і правила оформлення [Текст]. - К.: Держстандарт України, 1995. - 36 с.

. ГОСТ 7.1-2003. Бібліографічний запис. Бібліографічний опис. Загальні відомості та правила складання [Текст]. - К.: Держспоживстандарт України, 2007. - 47 с.

Додаток А

Текст програми - файл «CApp.cpp» наведено на (Рис. А.1)

#include <afxwin.h>

#include "gl/gl.h"

#include "gl/glu.h"

#include "CApp.h"

#include "math.h"

#include "GLAUX.h"

#pragma comment(lib, "GLAUX.lib")

#pragma comment(lib, "opengl32.lib")

#pragma comment(lib, "glu32.lib")hRC=NULL; // Постоянный контекст рендерингаhDC=NULL;                                    //

Приватный контекст устройства GDIhWnd=NULL; // Здесь будет хранится дескриптор окнаhInstance; // Здесь будет хранится дескриптор приложенияmove_z = 0.0, turn = 0.0, scale = 1.0;maxX, maxY, vspos, hspos;::CMainWin() {=GetSystemMetrics(SM_CXSCREEN);=GetSystemMetrics(SM_CYSCREEN);(NULL,"Курсовая работа. Прокошин Э. Э. Робот NXT MindStorms", WS_OVERLAPPEDWINDOW|WS_VSCROLL| WS_HSCROLL,CRect(0,0,maxX,maxY));pfd;  (&pfd,0, sizeof(PIXELFORMATDESCRIPTOR));.nSize = sizeof(PIXELFORMATDESCRIPTOR); .nVersion = 1; .dwFlags = PFD_DOUBLEBUFFER | PFD_SUPPORT_OPENGL | PFD_DRAW_TO_WINDOW; .iPixelType = PFD_TYPE_RGBA;.cColorBits = 24; .cDepthBits = 32;          .iLayerType = PFD_MAIN_PLANE; dc(this);nPixelFormat = ChoosePixelFormat(dc.m_hDC, &pfd);bResult = SetPixelFormat(dc.m_hDC, nPixelFormat, &pfd);_hrc = wglCreateContext(dc.m_hDC);(dc.m_hDC,m_hrc);(dc.m_hDC);_pPal = NULL;

}CMainWin::CreateRGBPalette(HDC hDC) {pfd;n = GetPixelFormat(hDC);(hDC, n, sizeof(PIXELFORMATDESCRIPTOR), &pfd);(!(pfd.dwFlags & PFD_NEED_PALETTE)) return FALSE;* pPal = (LOGPALETTE*) malloc(sizeof(LOGPALETTE) + 256 * sizeof(PALETTEENTRY));(!pPal){("Out of memory for logpal");FALSE;

}>palNumEntries = 256; bResult = m_pPal->CreatePalette(pPal);(pPal);bResult;

}_MESSAGE_MAP(CMainWin,CFrameWnd)_WM_PAINT()_WM_SIZE()_WM_VSCROLL()_WM_HSCROLL()_WM_TIMER()_WM_KEYDOWN()_MESSAGE_MAP()App;CMainWin::OnPaint() {pDC(this);* ppalOld = NULL;(m_pPal) {= pDC.SelectPalette(m_pPal, 0);.RealizePalette();

}bResult = wglMakeCurrent(pDC.m_hDC, m_hrc);();(); (pDC.m_hDC);(ppalOld) pDC.SelectPalette(ppalOld, 0); (NULL, NULL);

}CMainWin::OnSize(UINT nType, int cx, int cy) {dc(this);bResult = wglMakeCurrent(dc.m_hDC, m_hrc);gldAspect = (GLdouble) cx/ (GLdouble) cy;(GL_PROJECTION);// OutputGlError("MatrixMode");();(160.0, gldAspect, 1.0, 10.0);(20, 30, cx-20, cy-20);(NULL, NULL);  

}CMainWin::OnVScroll(UINT SBCode, UINT Pos, CScrollBar *SB) {(SBCode) {SB_LINEDOWN: vspos++;break;SB_LINEUP:       vspos--;break;SB_PAGEDOWN: vspos+=5;break;SB_PAGEUP:       vspos-=5;break;            SB_THUMBTRACK: vspos=Pos;break;SB_THUMBPOSITION: vspos=Pos;break;

}        ();(SB_VERT,vspos);

}CMainWin::OnHScroll(UINT SBCode, UINT Pos, CScrollBar *SB) {(SBCode) {SB_LINERIGHT: hspos++;break;SB_LINELEFT:   hspos--;break;SB_PAGERIGHT: hspos+=5;break;SB_PAGELEFT: hspos-=5;break;              SB_THUMBTRACK: hspos=Pos;break;SB_THUMBPOSITION: hspos=Pos;break; }();(SB_HORZ,hspos);

}CMainWin::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)

{ (nChar) {38: move_z -= 0.1; break;        //клавіша Стрілка вгору 40: move_z += 0.1; break;         //клавіша Стрілка вниз37: turn += 2.0; break; // Стрелка влево39: turn += -2.0; break; // Стрелка влево87: scale += 0.1; break; // CTRL + W83: scale -= 0.1; break; // CTRL + S

}(NULL);

}CMainWin::GLInit() { (1.0,1.0,1.0,1.0);(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);(GL_MODELVIEW);();(0.0, 1.0, -1.5); (1.0,1.0,0.0);

}CMainWin::OnOpenGLFirst() {              (360.0*hspos/100,0,1,0); // 3D-scrolling around y(360.0*vspos/100,1,0,0); // 3D-scrolling around x

// Устанавливаем камеру(30,1,0,0);(40,0,1,0);(2.0);(scale, scale, scale);(GL_LINES); // Оси координатf(1.0,0.0,0.0); // Ось X - красного цветаd(-3.0f,0.0f,0.0f);         glVertex3d(25.0f,0.0f,0.0f);f(0.0,1.0,0.0); // Ось Y - зеленого цветаd(0.0f,-3.0f,0.0f);         glVertex3d(0.0f,25.0f,0.0f);f(0.0,0.0,1.0); // Ось Z - синего цветаd(0.0f,0.0f,-3.0f);         glVertex3d(0.0f,0.0f,25.0f);();(turn, 0.0, 1.0, 0.0);

// Верх, основа();f(.7,.7,.7);(0.0, 3.6, move_z);(-10.0,1.0,0.0,0.0);(2.5,1.4,4.0);();

//glColor3f(.7,.7,.7);(-90.0,1.0,0.0,0.0);(90.0,0.0,0.0,1.0);(-.5 - move_z, -0.2, 1.5);(0.6,1.6);

// левок колесо();f(0.0, 0.0, 0.0);(2.5, 1.0, -1.0);(-move_z * 50,0.0,1.0,0.0);(0.5, 0.6);();

// Правое колесо();(2.5, -2.0, -1.0);(-move_z * 50,0.0,1.0,0.0);(0.5, 0.6);();

// Элемент, соединяющий колеса с корпусом();f(.7,.7,.7);(1.2, 0.2, -0.98);(2.8,2.4,0.7);();

// Элемент, соединяющий верх с нижним цилиндром();(0.0, 0.2, 1.05);(.3,.6,0.75);

// Элемент, выезжающий немного вперед, на который крепится балка с камерой(90, 0.0, 1.0, 0.0);(1.5, 0.0, 2.7);(.3,.6,1.7);

// балка для камеры(-60, 0.0, 1.0, 0.0);(.8, 0.0, 1.2);(.3,.6,1.7);

// Камера(60, 0.0, 1.0, 0.0);(-.6, 0.0,.6);(.4, 1.2,.6);

// задняя балка();(-30, 0.0, 1.0, 0.0);(0.0, 0.2, 3.5);(.2,.8,1.7);

// задняя камера(30, 0.0, 1.0, 0.0);(0.0, 0.0, 0.5);

//glColor3f(.95,.95,.95);(1.0, 1.4,.5);

}CApp::InitInstance() {_pMainWnd = new CMainWin;_pMainWnd->ShowWindow(m_nCmdShow);_pMainWnd->UpdateWindow();TRUE;

}

Рисунок А.1 - Текст програми - файл «CApp.cpp»

Текст програми - файл «CApp.h» наведено на (Рис. А.2).

CApp:public CWinApp {:BOOL InitInstance();

};CMainWin:public CFrameWnd

{        *m_pPal;m_hrc;: void GLInit();OnOpenGLFirst();OnSize(UINT nType, int cx, int cy);OnPaint();OnSize();OnVScroll(UINT SBCode,UINT Pos,CScrollBar *SB);OnHScroll(UINT SBCode,UINT Pos,CScrollBar *SB);OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);OnChar(UINT Ch, UINT Count, UINT Flags);CreateRGBPalette(HDC hDC);CreateSolidBrush;();_MESSAGE_MAP()

};

Рисунок А.2 - Текст програми - файл «CApp.h»

А.2 ЗАГАЛЬНІ ВІДОМОСТІ

Програма «Робот NXT MindStorms» складається з двох файлів. Для повноцінного функціонування програми необхідно мати налаштовану операційну систему Windows XP/7/8, а для запуску встановити пакет програм Microsoft Visual Studio 2010 або новіша.

А.3 ФУНКЦІОНАЛЬНЕ ПРИЗНАЧЕННЯ

Розроблена програма призначена для моделювання зовнішнього вигляду та характеристик робота NXT MindStorms. Програма може використовуватися для наглядного огляду функціонування робота NXT MindStorms у випадках, коли немає можливості використати реальний робот.

А.4 ВИКОРИСТОВУВАНІ ТЕХНІЧНІ ЗАСОБИ

Для запуску програми необхідно мати IBM-сумісний персональний комп’ютер із встановленим на ньому програмним забезпеченням, що перераховано у розділі А.2. Комп’ютер повинен мати стандартні пристрої для введення-виведення інформації (клавіатура, миша, відеокарта, дисплей), 6 мб вільного місця на жорсткому диску, 32 Мб вільної оперативної пам’яті, процесор з тактовою частотою не нижче 500 МГц.

А.5 ВИКЛИК І ЗАВАНТАЖЕННЯ

Для виклику програми необхідний ярлик Prokoshin_NXT_MindStorms.exe. Програма використовую 6 Мб вільного місця на жорсткому диску й 32 Мб оперативної пам’яті.

Источник: https://www.bibliofond.ru/detail.aspx?id=724529