2018年6月8日 星期五

羅云聖



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();

沒有留言:

張貼留言