Opengl创建机器人手臂代码示例
/******************************************************
*robot.cpp
*基于opengl的机械手臂示例代码
*s:机械臂逆时针旋转
*S:机械臂顺时针旋转
*e:腕部逆时针旋转
*E:腕部顺时针旋转
*******************************************************/
#include <GL/glut.h>
static int shoulder = 0;
static int elbow = 0;
void init(void)
{
glClearColor(0.0,0.0,0.0,0.0);
glShadeModel(GL_FLAT);
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glTranslatef(-1.0,0.0,0.0);
glRotatef((GLfloat)shoulder,0.0,0.0,1.0);
glTranslatef(1.0,0.0,0.0);
glPushMatrix();
glScalef(2.0,0.4,1.0);
glutWireCube(1.0);
glPopMatrix();
glTranslatef(1.0,0.0,0.0);
glRotatef((GLfloat)elbow,0.0,0.0,1.0);
glTranslatef(1.0,0.0,0.0);
glPushMatrix();
glScalef(2.0,0.4,1.0);
glutWireCube(1.0);
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
}
void reshape(int w,int h)
{
glViewport(0,0,(GLsizei)w,(GLfloat)h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(65.0,(GLfloat)w/(GLfloat)h,1.0,20.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0.0,0.0,-5.0);
}
void keyboard(unsigned char key, int x, int y)
{
switch (key) {
case 's':/*s key rotates at shoulder*/
shoulder = (shoulder + 5) % 360;
glutPostRedisplay();
break;
case 'S':
shoulder = (shoulder - 5) % 360;
glutPostRedisplay();
break;
case 'e':
elbow = (elbow + 5) % 360;
glutPostRedisplay();
break;
case 'E':
elbow = (elbow - 5) % 360;
glutPostRedisplay();
break;
default:
break;
}
}
int main(int argc, char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glutInitWindowSize(500,500);
glutInitWindowPosition(100,100);
glutCreateWindow(argv[0]);
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutKeyboardFunc(keyboard);
glutMainLoop();
return 0;
}
最新文章
- 【Win10 UWP】QQ SDK(一):SDK基本使用方法
- Elasticsearch 相关名词理解
- ADO.NET 拾遗
- cf509B Painting Pebbles
- String的构造函数、析构函数和赋值函数
- Asp.Net2.0下C#环境 Login控件实现用户登录
- JSP标准标签库(JSTL)--国际化标签库 fmt
- python自学基础1week
- python之matplotlib绘图基础
- 团队作业8——Beta版本冲刺计划及安排
- Asp.NetCore+Microsoft.AspNetCore.SignalR前后端分离
- 从零开始 —— Canvas(一)
- url加密和解密
- django之模型层(model)--多表相关操作(图书管理小练习)
- Unity3D MonoBehaviour的生命周期(lifecycle)
- everything结果出现文件找不到
- ubuntu下安装CAJ阅读器
- Navicat for MySQL 安装和破解(完美)
- Ldap-crack-test?
- Markdown总结整理