OpenGL编程指南11:组合运动示例2—创建机器人手臂模型
生活随笔
收集整理的這篇文章主要介紹了
OpenGL编程指南11:组合运动示例2—创建机器人手臂模型
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.源代碼:
#include <vgl.h>static int shoulder = 0, elbow = 0; void init(void) {glClearColor(0.0,0.0,1.0,0.0);glShadeModel(GL_FLAT); } void display(void) {glClear(GL_COLOR_BUFFER_BIT);glColor3f(1.0,1.0,1.0);//采用移動局部坐標的方式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(); //在壓入棧頂glScaled(2.0,0.4,1.0);glutWireCube(1.0);glPopMatrix();glPopMatrix();glutSwapBuffers(); } void reshape(int w,int h) {glViewport(0,0,(GLsizei)w,(GLsizei)h);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluPerspective(65,(GLdouble)w/(GLdouble)h,1.0,20.0);glMatrixMode(GL_MODELVIEW);glLoadIdentity();gluLookAt(0.0,0.0,6.0,0.0,0.0,0.0,0.0,1.0,0.0 ); }void keyboard(unsigned char key, int x, int y) {switch(key){case 's': //rotates at shoudershoulder = (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);glutInitWindowPosition(200,200);glutInitWindowSize(400,400);glutCreateWindow(argv[0]);init();glutDisplayFunc(display);glutReshapeFunc(reshape);glutKeyboardFunc(keyboard);glutMainLoop();return 0; }
2.輸出結果
總結
以上是生活随笔為你收集整理的OpenGL编程指南11:组合运动示例2—创建机器人手臂模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 感谢OpenEIM的技术人员能够及时修补
- 下一篇: 企业即时通讯一个全新行业的诞生