Translate:移動
Rotate:旋轉
Scale:縮放
![]() |
| 圖上的示意圖 |
由斜右上方向是大拇指的方向
(以此類推用要固定的軸式大拇指方向,四指就是轉動方向)
四指方向:X.Y固定開始轉動
![]() |
| 旋轉的結果 |
修改主程式
glutMotionFunc(motion);
mouse motionfunc///捕捉滑鼠的動態。
motion函式
void motion(int x, int y)///mouse的動作
{
myAngle=x; ///角度
}
還有
要修改和宣告角度
{
const double t=qlutGet(GLUT_ELAPSED_TIME) / 1000.0;
const double a=myAngle; 3.1旋轉的茶壺
用上週的程式碼,跟著範例再做一次
改display裡的程式
glPushMatrix();///現在的矩陣
glRotatef(myAngle,0,0,1);
glutSolidTeapot(0.3);
glPopMatrix();///之前記憶的矩陣
*問題是每次拖動茶壺就會從初始的位置開始轉3.2改善的旋轉茶壺
新增滑鼠函式:
int oldX=0;
void mouse(int button,int state,int x,int y)
{
if(state==GLUT_DOWN) oldX=x;///放開的時候,oldX會記錄位置
}
void motion(int x,int y)
{
myAngle +=(x-oldX);///原本的角度+滑鼠在的位置-上一步在的位置
oldX = x;
display();
}
*記得在主函式裡增加glutMouseFunc(mouse);






沒有留言:
張貼留言