
#include <GL/glut.h>
void upper_arm()
{
glPushMatrix();
glScalef(1,0.3,0.3);
glutSolidCube(0.5);
glPopMatrix();
}
float angle=0;///TODO
void display(){
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef(angle,0,0,1);///對z軸懸//TODO
glTranslated(0.25,0,0)
upper_arm();
glPopMatrix();
angle++;
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("Week09");
glutIdleFunc(display);///TODO
glutDisplayFunc(display);
glutMainLoop();
}

void display 裡
glTranslated(0.25,0,0)

void display 裡
glTranslated(0.5,0.5,0);///TODO3 把物體放到想要的座標
************
概念矩陣
{glTranslatef 1 }{glRotatef}{glTranslatef 2}*{arm}
離arm越近 越先處裡
************
手臂概念

glPushMatrix();
glTranslated(0.2,0,0);///TODO3 把物體放到想要的座標
glRotatef(angle,0,0,1);
glTranslated(0.25,0,0);
glColor3f(10,0,0);
upper_arm();
glPushMatrix();
glTranslated(0.25,0.,0);///TODO3 把物體放到想要的座標
glRotatef(angle,0,0,1);
glTranslated(0.25,0,0);
glColor3f(0,0,10);
upper_arm();
glPopMatrix();
glPopMatrix();
**************
要揮手加入
angle+=xd;
if(angle>60) xd=-1;
if(angle<0) xd=1;
************************
柱體製造
glPushMatrix();
glTranslated(-2.4,1.2,-6);
glRotated(60,1,0,0);
glRotated(a,0,0,1);
glutSolidSphere(1,slices,stacks);
glPopMatrix();
glPushMatrix();
glTranslated(0,1.2,-6);
glRotated(60,1,0,0);
glRotated(a,0,0,1);
glutSolidCone(1,1,slices,stacks);
glPopMatrix();
glPushMatrix();
glTranslated(2.4,1.2,-6);
glRotated(60,1,0,0);
glRotated(a,0,0,1);
glutSolidTorus(0.2,0.8,slices,stacks);
glPopMatrix();
沒有留言:
張貼留言