
idle函市
angle+=0.01;
glutPostRedisplay(); 更改angle讓它旋轉

先呼叫出兩個茶壺glutSolidTeapot(0.2);
宣告mouse函示
void mouse(int button,int state,int x, int y)
{
oldX=x; oldY=y;
}
宣告轉動函示
void motion(int x,int y)
{
angle+=X-oldX;
oldX=x;
glutPostRedisplay();
}
最後main函示觸碰滑鼠之後可轉動茶壺

使用較方便的作法
float angle[20],X=150,Y=150,oldX=0,oldY=0;
當關節較多時 可以用此作法
在茶壺內
glRotatef(angle[0], 0.0f, 0.0f, 1.0f);
將原做法更改成angle[] 之後可用按鍵來更改單一關節
宣告鍵盤函示
void keyboard(unsigned char key,int x,int y)
{
if(key=='1')ID=1;
if(key=='2')ID=2;
if(key=='3')ID=3;
if(key=='4')ID=4;
if(key=='5')ID=5;
}
當按下鍵盤1時 就會跑
glPushMatrix();
glTranslatef(0.2,0,0);
glRotatef(angle[1], 0.0f, 0.0f, 1.0f);
glTranslatef(0.2,0,0);
glutSolidTeapot(0.2);//right arm
glPopMatrix();
glPopMatrix();
沒有留言:
張貼留言