• OpenGL例子:机器人手臂


    #include <windows.h>  
    #include <GL/gl.h>  
    #include <GL/glu.h>  
    #include <GL/glut.h>  
      
    #include <cstdlib>  
    #include <cstdio>  
    #include <cmath>  
      
    static int shoulder = 0, 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,(GLsizei)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':  
            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;  
    }  
    
  • 相关阅读:
    AjaxControlToolKit(整理)三.......(35个控件)简单介绍
    C#多线程学习
    《深入浅出WPF》视频列表
    【Redis】Redis功能及性能
    MySQL性能优化
    【Redis】Redis常用命令
    php项目相关资源
    JAVA基础知识总结:十一
    JAVA基础知识总结:九
    JAVA基础知识总结:十
  • 原文地址:https://www.cnblogs.com/make217/p/6658735.html
Copyright © 2020-2023  润新知