const double t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
const double a = t*90.0; //隨著時間t變化的速度
glPushMatrix(); //備份矩陣 //把現在的位置記住 開始作圖
glTranslated(-2.4,1.2,-6);
// d代表double 改成f就是float 後面的數字分別代表(x,y,z)的移動距離
glRotated(60,1,0,0); // 以x軸為軸心旋轉60度
//(度數, x軸, y軸, z軸)
glRotated(a,0,0,1); //以z軸為軸心隨著時間變化旋轉(a)
glutSolidSphere(1,slices,stacks);
glPopMatrix(); //還原矩陣 //回到剛才作圖(移動...etc)前的原點
*新增會旋轉的茶壺*
五彩繽紛 還有重疊
*放大變形*
glPushMatrix();
glTranslated(0,0,-6); //移動座標
glRotated(60,1,0,0);
glRotated(a,0,0,1);
glScalef(1,2,2); //對(x,y,z)軸放大幾倍
glColor3d(0,1,0);
glutSolidTeapot(1);
glPopMatrix();
*滑鼠移動茶壺*
變數宣告
main函式
glutMouseFunc(mouse); 使用的函數
補充
http://blog.csdn.net/lisy14/article/details/70713007
檢測鼠標單擊
void glutMouseFunc(void (*func)(int button,int state,int x,int y));
func:處理鼠標點擊事件的函數名button:取值
GLUT_LEFT_BUTTON GLUT_MIDDLE_BUTTON
GLUT_RIGHT_BUTTONstate:取值GLUT_DOWN
GLUT_UPx,y:提供鼠標當前窗口坐標(以左上角為原點)
motion移動
void glutMouseFunc(void (*func)(int button,int state,int x,int y));
func:處理鼠標點擊事件的函數名button:取值
GLUT_LEFT_BUTTON GLUT_MIDDLE_BUTTON
GLUT_RIGHT_BUTTONstate:取值GLUT_DOWN
GLUT_UPx,y:提供鼠標當前窗口坐標(以左上角為原點)
motion移動
關於滑鼠移動的座標概念
第一次滑鼠移動↓↓
第二次滑鼠移動↓↓
以此類推並且了解到dx, dy, dz的算法
display


沒有留言:
張貼留言