⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档.txt

📁 一个机器人手臂控制的三维造型。在VC下运行正确
💻 TXT
字号:
#include <GL/glut.h> 
#include <stdlib.h> 
static int shoulder = 0, elbow = 0;//shoulder:肩部角度,elbow: 肘部角度 
void init(void) 
{ 
glClearColor(0.0f, 0.0f, 0.0f, 0.0f); 
glShadeModel(GL_FLAT); 
} 
void display(void) 
{ 
glClear(GL_COLOR_BUFFER_BIT); 
glPushMatrix();//把当前的变换矩阵压入OpenGL内部栈中,用以保存当前矩阵 
//画机器人的上臂 
glTranslatef(-1.0f, 0.0f, 0.0f);//用平移矩阵乘当前矩阵,格式为:glTranslatef(x,y,z) 
glRotatef((GLfloat) shoulder, 0.0f, 0.0f, 1.0f);//用旋转矩阵乘当前矩阵,格式为glRotatef (角度,x轴,y轴,z轴),这里是绕Z轴旋转 
glTranslatef(1.0f, 0.0f, 0.0f);//再用平移矩阵乘当前矩阵,注意顺序 
glPushMatrix();//变换矩阵压栈 
glScalef(2.0f, 0.4f, 1.0f);//用缩放矩阵乘以当前矩阵,格式为glScalef(x缩放比例,y缩放比例,z缩放比例) 
glutWireCube(1.0f);//glut库函数,画一个三维的Cube,参数为边长 
glPopMatrix();//弹栈,现在矩阵恢复到使用缩放前的样子 
//画机器人的前臂,请注意平移矩阵和旋转矩阵的变化 
glTranslatef(1.0f, 0.0f, 0.0f); 
glRotatef((GLfloat) elbow, 0.0f, 0.0f, 1.0f); 
glTranslatef(1.0f, 0.0f, 0.0f); 
glPushMatrix(); 
glScalef(2.0f, 0.4f, 1.0f); 
glutWireCube(1.0f); 
glPopMatrix(); 
glPopMatrix(); 
glFlush(); 
} 

void reshape (int width, int height) 
{ 
glViewport(0, 0, width, height); 
glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 
gluPerspective(65.0f, (GLfloat)width/(GLfloat)height, 1.0f, 20.0f);//建立一个透视投影视图体,格式为:gluPerspective(视域的角度,宽高比,视点到近裁剪面的距离(总为正),视点到远裁剪面的距离(总为正)) 
glMatrixMode(GL_MODELVIEW); 
glLoadIdentity(); 
glTranslatef(0.0f, 0.0f, -5.0f);//用平移矩阵乘当前矩阵,注意,这会将所有绘制过程中绘制的物体平移 
} 

void keyboard(unsigned char key, int x, int y) 
{ 
switch (key) 
{ 
case 'a'://处理四个按键,改变旋转角度,转动手臂 
shoulder = (shoulder + 5) % 360; 
glutPostRedisplay();//重画 
break; 
case 'd': 
shoulder = (shoulder - 5) % 360; 
glutPostRedisplay(); 
break; 
case 'q': 
elbow = (elbow + 5) % 360; 
glutPostRedisplay(); 
break; 
case 'e': 
elbow = (elbow - 5) % 360; 
glutPostRedisplay(); 
break; 
case 'x': 
exit(0); 
break; 
default: 
break; 
} 
} 

int main(int argc, char** argv) 
{ 
glutInit(&argc, argv); 
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); 
glutInitWindowSize(500, 500); 
glutInitWindowPosition(100, 100); 
glutCreateWindow("Transform"); 
init(); 
glutDisplayFunc(display); 
glutReshapeFunc(reshape); 
glutKeyboardFunc(keyboard); 
glutMainLoop(); 
return 0; 
} 


一个机器人手臂控制的三维造型。在VC下运行正确,且是opengl编写。希望能用到 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -