سورس بازوی ربات سه بعدی با OpenGL به زبان C++

3d arm in opengl using cpp 5405 تصویر

سورس بازوی ربات سه بعدی با OpenGL به زبان C++

در این بخش سورس بازوی ربات سه بعدی با OpenGL را برای شما آماده کرده ایم که با استفاده از زبان برنامه نویسی C++ نوشته شده است. با مشاهده سورس کد این پروژه می توانید مواردی همچون رسم اشکال مختلف، حرکت دادن شیء ها را بیاموزید که به منظور ساخت بازی های ساده مناسب است. در ادامه می توانید توضیحات و تصاویر مربوط به این برنامه را مشاهده کنید.

توضیحات پروژه

در این پروژه OpenGL، بعد از اجرا شدن برنامه یک بازوی سه بعدی در صفحه نمایش داده می شود که شامل ۴ قسمت است و با یک گوی به یک دیگر متصل شده اند. این بازوی سه بعدی قابلیت چرخش به تمام جهت ها را دارد. از امکانات این پروژه می توان به بزرگ/کوچک نمایی، بزرگ/کوچک کردن باز، چرخش به بالا، پایین، راست، چپ و انتخاب بازو برای حرکت اشاره کرد.

در زیر برخی از توابع استفاده شده در این پروژه را مشاهده می کنید:

  • تابع Set3DViewport: برای نمایش بخش های سه بعدی استفاده می شود.
  • تابع Set2DViewport: برای نمایش بخش های دو بعدی استفاده می شود.
  • تابع Joystick: برای کنترل ربات استفاده از دسته بازی (اگه به کامپیوتر وصل شده باشد) استفاده می شود.
  • تابع DrawBox: برای رسم گوی هایی که دسته ربات روی آن قرار دارد، استفاده می شود.
  • تابع OnRenderOverlay: برای نمایش متن مقادیر مربوط به ربات استفاده می شود.
  • تابع Keyboard: برای مدیریت کلید های زده شده توسط کاربر استفاده می شود.
  • تابع glutSolidCylinder: برای رسم بازوی ربات را به صورت توپر استفاده می شود.
  • تابع Display: برای نمایش اشیاء مختلف بر روی صفحه استفاده می شود.

3d arm in opengl using cpp 5405 1 تصویر

قسمت های از سورس پروژه:

#define _CRT_SECURE_NO_WARNINGS
#define _STDCALL_SUPPORTED
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <gl\glut.h>
// ROBOT CODE
#include "RobotApp.h"
int g_curLink = 0;
float g_distance = 0;
RobotApp robotApp;
// END ROBOT CODE
char *g_windowTitle = "SourceSara.Com | Robotic Arm";
int g_displayMode = GLUT_DOUBLE | GLUT_STENCIL | GLUT_RGBA | GLUT_DEPTH;
double g_Fps = 0;
double g_aspectRatio = 1.333;
int g_screenWidth = 853;
int g_screenHeight = 480;
int g_mouseX = 0;
int g_mouseY = 0;
double g_updateInterval = 0.01666667f;
double g_renderInterval = 0.01666667f;
double g_Fov = 45.0;
double g_zNear = 0.01;
double g_zFar = 100.0;
bool g_keyMap[256] = { false };
bool g_specialKeyMap[256] = { false };
void OnInit();
void OnUpdate(double deltaTime);
void OnRender();
void OnRenderOverlay();
void Set2DViewport();
void Set3DViewport();
void glutBitmapString(void *font, const char *string);
void glutStrokeString(void *font, const char *string);
void display();
void reshape(int width, int height);
void keyboard(unsigned char key, int x, int y);
void keyboardup(unsigned char key, int x, int y);
void special(int key, int x, int y);
void specialup(int key, int x, int y);
void mouse(int button, int state, int x, int y);
void motion(int x, int y);
void passive(int x, int y);
void entry(int state);
void visibility(int state);
void idle();
void timer1(int value);
void timer2(int value);
void timer3(int value);
void timer4(int value);
void menu(int state);
void menustatus(int state, int x, int y);
void windowstatus(int state);
void joystick(unsigned int buttonMask, int x, int y, int z);
int main(int argc, char **argv)
{
	printf("\n\n\n\t*********** ROBOT ***************\n\n");
	glutInit(&argc, argv);
	glutInitDisplayMode(g_displayMode);
	glutInitWindowSize(g_screenWidth, g_screenHeight);
	glutCreateWindow(g_windowTitle);
	glutDisplayFunc(display);
	glutReshapeFunc(reshape);
	glutKeyboardFunc(keyboard);
	glutKeyboardUpFunc(keyboardup);
	glutSpecialFunc(special);
	glutSpecialUpFunc(specialup);
	glutMouseFunc(mouse);
	glutMotionFunc(motion);
	glutPassiveMotionFunc(passive);
	glutEntryFunc(entry);
	glutVisibilityFunc(visibility);
	glutIdleFunc(idle);
	if (g_timer1millis != 0) glutTimerFunc(g_timer1millis, timer1, g_timer1value);
	if (g_timer2millis != 0) glutTimerFunc(g_timer2millis, timer2, g_timer2value);
	if (g_timer3millis != 0) glutTimerFunc(g_timer3millis, timer3, g_timer3value);
	if (g_timer4millis != 0) glutTimerFunc(g_timer4millis, timer4, g_timer4value);
	glutMenuStateFunc(menu);
	glutMenuStatusFunc(menustatus);
	glutWindowStatusFunc(windowstatus);
	glutJoystickFunc(joystick, g_joystickPollInterval);
	OnInit();
	glutMainLoop();
	return 0;
}
void OnInit()
{
	robotApp.links_.resize(5);
	robotApp.links_[0].r = 1;
	robotApp.links_[0].g = 0;
	robotApp.links_[0].b = 0;
	robotApp.links_[1].r = 0;
	robotApp.links_[1].g = 1;
	robotApp.links_[1].b = 0;
	robotApp.links_[2].r = 0;
	robotApp.links_[2].g = 0;
	robotApp.links_[2].b = 1;
	robotApp.links_[3].r = 1;
	robotApp.links_[3].g = 1;
	robotApp.links_[3].b = 0;
	robotApp.links_[4].r = 1;
	robotApp.links_[4].g = 0;
	robotApp.links_[4].b = 1;
	robotApp.links_[0].distance = 2;
	robotApp.links_[1].distance = 2;
	robotApp.links_[2].distance = 2;
	robotApp.links_[3].distance = 2;
	robotApp.links_[4].distance = 0;
}
void joystick(unsigned int buttonMask, int x, int y, int z)
{
	g_joystickButtonMask = buttonMask;
	g_joystickX = x;
	g_joystickY = y;
	g_joystickZ = z;
}

نکات

  • این پروژه در نرم افزار Visual Studio نسخه ۲۰۱۵ تست شده است و به خوبی کار می کند.
  • به منظور اجرای پروژه های OpenGL باید آن را بر روی IDE خود نصب کنید (آموزش نصب OpenGL).
  • در صورت نا مفهوم بودن بخشی از کد، می توانید در قسمت نظرات مطرح کنید تا برای شما توضیح داده شود.

نوشته سورس بازوی ربات سه بعدی با OpenGL به زبان C++ اولین بار در سورس سرا - آموزش برنامه نویسی. پدیدار شد.

درباره نویسنده: administrator

ممکن است دوست داشته باشید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *