上圖片為以一個關節為主軸做旋轉
也就代表肩膀
兩個關節做轉動 分別為手肘跟肩膀
glPushMatrix();///右邊手臂
glTranslatef(0.2, 0, 0);///(3) 掛在身體的右肩
glRotatef(angle, 0,0,1);///(2) 旋轉
glTranslatef(0.15, 0,0);///(1) 把茶壼柄,移動到畫面的中心,當旋轉軸
glColor3f(1,0,0);///紅色的
glutSolidTeapot( 0.15 );///右手臂
glPushMatrix();///NOW2
glTranslatef(0.2, 0, 0);///(3) 掛在身體的右肘///NOW2
glRotatef(angle, 0,0,1);///(2) 旋轉///NOW2
glTranslatef(0.15, 0,0);///(1) 把茶壼柄,移動到畫面的中心,當旋轉軸///NOW2
glColor3f(1,0,0);///紅色的///NOW2
glutSolidTeapot( 0.15 );///右下手臂///NOW2
glPopMatrix();///NOW2
glPopMatrix();
void motion(int x, int y)
{
angle = x;///NOW3 滑鼠控制
display();///NOW3 滑鼠控制
}
複製右手臂的程式碼 並把移動方式加負號
glTranslatef(-0.2, 0, 0);///(3) 掛在身體的左肩
glRotatef(angle, 0,0,1);///(2) 旋轉
glTranslatef(-0.15, 0,0);///(1) 把茶壼柄,移動到畫面的中心,當旋轉軸
glColor3f(1,0,0);///紅色的
glutSolidTeapot( 0.15 );///左手臂
glPushMatrix();///NOW2
glTranslatef(-0.2, 0, 0);///(3) 掛在身體的左肘///NOW2
glRotatef(angle, 0,0,1);///(2) 旋轉///NOW2
glTranslatef(-0.15, 0,0);///(1) 把茶壼柄,移動到畫面的中心,當旋轉軸///NOW2
glColor3f(1,0,0);///紅色的///NOW2
glutSolidTeapot( 0.15 );///左下手臂///NOW2
glPopMatrix();///NOW2
glPopMatrix();
始滑鼠不管點哪裡都會從0開始
glutMouseFunc(mouse); 使用滑鼠
int oldX, oldY;
void motion(int x, int y)
{
angle += (x-oldX);///NOW3 滑鼠控制
oldX=x;///NOW5
display();///NOW3 滑鼠控制
}
void mouse(int button, int state, int x, int y)
{///NOW5 要知道mouse的按鍵狀況
oldX = x;///NOW5 要知道mouse的按鍵狀況,會記得oldX
}
關節分別分開移動
void keyboard(unsigned char key, int x, int y)///NOW6 配合鍵盤
{
if(key=='1') jointID=1;///NOW6 配合鍵盤
if(key=='2') jointID=2;///NOW6 配合鍵盤
if(key=='3') jointID=3;///NOW6 配合鍵盤
if(key=='4') jointID=4;///NOW6 配合鍵盤
}
宣告鍵盤上的按鍵!!
然後就成功結束了喔~~
沒有留言:
張貼留言