期中考
接下來要做簡易機械手臂
用實心跟空心的物體做
先做一個對Z軸轉動的方形
void uparm()
{
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();
glRotatef(angle,0,0,1);
uparm();//用呼叫函式寫
glPopMatrix();
angle++;
glutSwapBuffers();
}
畫出左右手
glPushMatrix();
glTranslatef(0.2,0,0);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
glColor3f(1,0,0);
uparm();
glPushMatrix();
glTranslatef(0.25,0,0);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
glColor3f(1,1,0);
uparm();
glPopMatrix();
glPopMatrix();
glPushMatrix();
glTranslatef(-0.2,0,0);
glRotatef(-angle,0,0,1);
glTranslatef(-0.25,0,0);
glColor3f(1,0,0);
uparm();
glPushMatrix();
glTranslatef(-0.25,0,0);
glRotatef(-angle,0,0,1);
glTranslatef(-0.25,0,0);
glColor3f(1,1,0);
uparm();
glPopMatrix();
glPopMatrix();
先做一個對Z軸轉動的方形
void uparm()
{
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();
glRotatef(angle,0,0,1);
uparm();//用呼叫函式寫
glPopMatrix();
angle++;
glutSwapBuffers();
}
glPushMatrix();
glTranslatef(0.5,0.5,0);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
uparm();
glPopMatrix();
增加移動程式碼來移動它的位置(這就是呼叫函式的原因)
畫出左右手
glPushMatrix();
glTranslatef(0.2,0,0);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
glColor3f(1,0,0);
uparm();
glPushMatrix();
glTranslatef(0.25,0,0);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
glColor3f(1,1,0);
uparm();
glPopMatrix();
glPopMatrix();
glPushMatrix();
glTranslatef(-0.2,0,0);
glRotatef(-angle,0,0,1);
glTranslatef(-0.25,0,0);
glColor3f(1,0,0);
uparm();
glPushMatrix();
glTranslatef(-0.25,0,0);
glRotatef(-angle,0,0,1);
glTranslatef(-0.25,0,0);
glColor3f(1,1,0);
uparm();
glPopMatrix();
glPopMatrix();
上下擺動的程式
float dx = 1;
angle+=dx;
if(angle>60) dx-=1;
else if(angle<0) dx+=1;



沒有留言:
張貼留言