2023年3月2日 星期四

這是什麼 Week03 移動Transform

 一、課本範例

網址:https://jsyeh.org/3dcg10/

下載Exsample的data跟win32

windows解壓縮後,把data解壓縮在裡面

再將windows資料夾下的Transformation打開,或有一個車子的模型

移動、旋轉、大小

glTransform是移動

glRotate是旋轉

glScale是大小

將滑鼠移到要調整的數值上,並點住滑動,便能改變數值

右鍵畫面能更改模型

二、移動茶壺

建立GLUT專案

先下載freeglut資料夾,將lib/libfreeglut.a複製貼上改為libglut32.a。開啟CodeBlock,建立GLUT專案,Build and run確認有圖形在轉

移動glTranslatef()

複製上禮拜的茶壺程式,在void display裡打進新程式

因glTranslatef()會改變矩陣,所以要glPushMatrix();跟glPopMatrix();來備份跟還原矩陣

Build and run後茶壺會被移動

三、利用滑鼠移動

建立GLUT專案

freeglut資料夾用過就不用再改了,同上,並複製上面的程式碼

點擊移動茶壺

建立一個函式mouse,包含button、state、x、y,內容有X Y,外面要宣告float X,Y,Z,把glTranslatef()裡改為X,Y,Z,在main函式裡新增glutMouseFunc(mouse);

Build and run並透過點擊改變茶壺位置

四、利用滑鼠找位置並畫圖

建立GLUT專案

同上,並複製上面的程式碼

點擊畫面秀位置

把glPushMatrix(); 到glPopMatrix();都刪掉,在mouse函式裡增加printf("%d %d %d\n",button,state,x,y);讓每次點擊時,小黑都會顯示東西

Build and run並點擊小視窗畫面,小黑會有一串數字,分別為button state x y

左:0 中:1 右:2

按下:0 放開:1

把新增的那行程式碼改為if(state==GLUT_DOWN) printf("    glVertex2f(%.2f,%.2f);\n",X,Y);

GLUT_DOWN是按下,如果是按下,則印出指令跟座標

Build and run並點擊小視窗畫面,小黑會有一串指令跟座標
利用這些點,複製後貼到上次回家作業畫圖的程式裡,可省去用小畫家找座標的時間

五、Git上船指令



沒有留言:

張貼留言