#include <GL/glut.h>
void arm(){
glPushMatrix();
glScalef(1,0.3,0.3);
glutSolidCube(0.5);
glPopMatrix();
}
float angle=0;
void display(){
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();///右手,備份
glTranslatef(0.2,0,0);///上手臂移至畫面右上
glRotatef(angle,0,0,1);///手臂轉動
glTranslatef(0.25,0,0);///上手臂(旋轉中心)移至畫面中心
glColor3f(1,0,0);///上顏色RGB
arm();///呼叫畫手臂函式
glPushMatrix();///備份
glTranslatef(0.25,0,0);///下手臂移至畫面右中
glRotatef(angle,0,0,1);///手臂轉動
glTranslatef(0.25,0,0);///下手臂(旋轉中心)移至畫面中心
glColor3f(0,0,1);///上顏色RGB
arm();///呼叫畫手臂函式
glPopMatrix();///還原
glPopMatrix();///還原
glPushMatrix();///左手,備份
glTranslatef(-0.2,0,0);///上手臂移至畫面左上
glRotatef(-angle,0,0,1);///手臂轉動
glTranslatef(-0.25,0,0);///上手臂(旋轉中心)移至畫面中心
glColor3f(1,0,0);///上顏色RGB
arm();///呼叫畫手臂函式
glPushMatrix();
glTranslatef(-0.25,0,0);///下手臂移至畫面左中
glRotatef(-angle,0,0,1);///手臂轉動
glTranslatef(-0.25,0,0);///上手臂(旋轉中心)移至畫面中心
glColor3f(0,0,1);///上顏色RGB
arm();///呼叫畫手臂函式
glPopMatrix();///還原
glPopMatrix();///還原
angle+=dx;
if(snagle>60)dx=-1;
if(angle<0)dx=+1;
glutSwapBuffers();
}
int main(int a,char**b){
glutInit(&a,b);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("Week08");
glutIdleFunc(display);
glutDisplayFunc(display);
glutMainLoop();
}
|
沒有留言:
張貼留言