图形学,画一个机器人的框架
首先初始化整个画面
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; }