图形学,画一个机器人的框架

首先初始化整个画面

void init(void) 
{
   glClearColor (0.0, 0.0, 0.0, 0.0);
   glShadeModel (GL_FLAT);
}

 绘制机器人头部

glScalef (1.6, 2.0, 1.0);
       glutWireCube (1.0);
     glPopMatrix();

     glPushMatrix();
       glTranslatef (0.0, 1.4, 0.0);   
       glRotatef ((GLfloat) head, 0.0, 1.0, 0.0);
       glScalef (0.5,0.6,0.5);
      glutWireSphere(0.7, 40, 40);
      glPopMatrix(); 

 

 

绘制机器人手臂

 

glScalef (1.2, 0.4, 0.5);
       glutWireCube (1.0);
       glPopMatrix();

       glTranslatef (0.6, 0.0, 0.0); 
       glRotatef ((GLfloat) elbow, 0.0, 0.0, 1.0);
       glRotatef ((GLfloat) elbowh, 0.0, 1.0, 0.0);
       glTranslatef (0.7, 0.0, 0.0);

绘制机器人肩膀

glTranslatef (0.8, 0.9, 0.0);  
       glRotatef ((GLfloat) shoulder, 0.0, 0.0, 1.0);
       glRotatef ((GLfloat) shoulderh, 0.0, 1.0, 0.0);
       glTranslatef (0.6, 0.0, 0.0);

绘制机器人的腿

glTranslatef (0.5, -1.0, 0.0); 
       glRotatef ((GLfloat) leg, 0.0, 1.0, 0.0);
       glTranslatef (0.0, -0.6, 0.0);

 

绘制机器人的脚

lTranslatef (0.0, -0.6, 0.0);
       glRotatef ((GLfloat) foot, 0.0, 1.0, 0.0);
       glTranslatef (0.0, -0.7, 0.0);

 

 

 

重新绘制函数

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, 1.0, -5.0);
}

 

主要执行顺序

 

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

 

posted @ 2019-04-28 15:34  星之眷属  阅读(368)  评论(0编辑  收藏  举报