ʕ •ᴥ•ʔ week03
week03 -20220308
小葉老師上課要點:
1. 主題: 移動 Translate、座標換算
2. 實作: glTranslatef(x,y,z);
3. 主題: 滑鼠事件 glutMouseFunc()
4. 用滑鼠寫程式
5. 作業2: 很多點畫酷東西 (小畫家協助)
能夠讓作業加分的一些東東
1.建立GLUT專案
位置要放在freeglut資料夾目錄
2.先copy上週得程式碼雛形,以下:
開始畫小小兵
* 藍色框為自訂義的函式、橘色框為原創
* 藍色框為自訂義的函式、橘色框為原創
但是需要腮紅,所以要改良增加座標
* 藍色框為自訂義的函式、橘色框為原創
但是腮紅要橢圓,所以在定義一個myCircle2畫橢圓
重點整理
01. glBegin(); //開始畫
glEnd(); //結束畫
02. glVertex2f( , ); //Vertex是頂點 , 2f所以兩個浮點數參數
03. glColor3f ( , , ); //3f所以三個浮點數參數
04. 使用 sin , cos , 圓一圈要2拍 , for迴圈 , 函式
移動 Translate
1. 進入小葉老師的網址 https://jsyeh.org/3dcg10
下載三個檔案 data. zip , windows zip ,glut32.d11
2. windows.zip 解壓縮 > 下載 \ windows \ Shapes .exe
data.zip 解壓縮>下載 \ windows \ data \ 模型
glut32.d11 解壓縮 > 下載 \ windows \ glut32.d11
3.執行 > 下載 \ window \ Transformation.exe 看範例
拖曳下方綠色數值(glRotatef)可以旋轉車子
上面右方按右鍵可以選擇其他項目的模型
實作 Transformation 的 GLUT 程式
1.建立新的 GLUT 專案,檔名為: week03_translate
2.先畫一個上周的茶壺出來
* 這個茶壺不會動
* 使茶壺往右上角移動
結果茶壺出現在右上角的位置了,然後再點一次就又往右上角移動,然後會跑出視窗外
移動會累積,因為它會修改矩陣
* 加上備份/還原矩陣,茶壺不會點一下就跑走了
glPushMatrix();
glPopMatrix();
* 想要四個茶壺
建立一個myTeapot函式,給能夠修改的x,y座標
畫茶壺輸入四個座標就有四個茶壺
滑鼠事件 glutMouseFunc()
* 使用滑鼠事件實現滑鼠點在哪,茶壺就移動到哪
用水彩畫起來的為新加的程式碼
用滑鼠寫程式
1.建立新的GLUT專案,檔名:week03_mouse_hw2
2.將week03_mouse的程式碼copy過來
3.增加兩行程式碼
#include <stdio.h> ///printf()印東西用的
printf("%d %d %d %d\n", button, state, x, y);
4.縮小茶壺: glutSolidTeapot(0.1); ///變成小茶壺
* mose 的座標系統,也是 window 視窗的座標系統 座標轉換: 可把 mouse (0...300 , 0...300)換算成 3D 的世界(-1...+1 , -1...+1)
(mouseX-150)/150.0, -(mouseY-150)/150.0)
用滑鼠寫程式
1. 模仿茶壺程式碼,放到滑鼠事件
2. 在 "week03 移動" 視窗滑鼠點一下就會產生一行程式碼,放開滑鼠也會產生一行程式碼
可以這樣在視窗上點出???的輪廓
3.將程式碼複製起來,貼到 bonus 去測試
4.紅框為增加的程式碼,並將原本畫小小兵的程式碼註解掉(灰色部分)
程式碼測試出來的詭異多邊形,就是利用滑鼠事件繪製出來點接起來的模樣
* 注意: 左側深黑色的檔名是目前會執行的程式碼,欲切換其他檔案:
對該檔名點右鍵 > Activate project
用小畫家寫作業
1.開啟小畫家,將畫布大小設為300*300像素(windows視窗預設一樣)
2.鼠標停在畫布上,從左下角就可以從像素得知x,y座標
3.可以用滴管吸顏色、點擊編輯色彩,就可以知道顏色的RGB
4.但是GLUT顏色值表示只能介於0-1之間怎麼辦?
: 將RGB各/255.0
e.g 某黃色RGB為255,208,32,
寫到GLUT : glColor3f(255/255.0 , 208/255.0 , 32/255.0 )
沒有留言:
張貼留言