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;
    }

  • 相关阅读:
    java 内存命令
    sts4 集成 springboot 和 activiti5
    sts4 安装spring xml 的提示。
    去除office 2019 由于您的登录凭据已经过期,的提示。
    「なきゃ」和「なくちゃ」分别是什么的原型?
    能力考必看|推荐三本适合N1和N2能力考练听力的书|帝京日语
    影子练习
    早大前辈分享日本留学生考试(EJU)日语高分经验
    星野源 新垣结衣 结婚
    使Nginx支持更多并发 请求的 Linux内核参数的优化
  • 原文地址:https://www.cnblogs.com/herd/p/8530047.html
Copyright © 2011-2022 走看看