zoukankan      html  css  js  c++  java
  • 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;
    }

  • 相关阅读:
    区块链
    区块链
    区块链
    区块链
    区块链 – 介绍
    区块链 教程
    Matplotlib 直方图
    Matplotlib 饼图
    Matplotlib 柱状图
    Matplotlib 多个图形
  • 原文地址:https://www.cnblogs.com/herd/p/8530047.html
Copyright © 2011-2022 走看看