1. 學習點、線、面和色彩
1-1. 打開 https://jsyeh.org/3dcg10,並下載「win32(windows.zip)」 及 「data(data.zip)」
windows.zip = 程式執行檔,data.zip = 3D模型檔及圖檔
1-2. 在下載資料夾中把 windows.zip 解壓縮會產生 windows 資料夾,然後再將data.zip 裡面的 data 拉到剛剛的 windows 資料夾裡
1-3. 執行 Shapes.exe 便可操作課本範例(往右X正,往上Y正)
1-4. mouse右鍵,在左邊可切換大的頂點、逐個色彩
1-5. mouse右鍵,在右邊可切換點、線、面
1-6. mouse左鍵,在右邊可按「綠色數字」上下調整
可以改色彩 glColor3f(r, g, b),ex:紅(1, 0, 0)、黃(1, 1, 0)、綠(0, 1, 0)、藍(0, 0, 1)、紫(1, 0, 1)
可以改頂點座標 glVertex2f(x, y)
2. 要寫程式,試試看點線面色彩
2-0. 先把 FreeGLUT 裝好(解壓縮到桌面上。C:\Users\Administrator\Desktop\freeglut)
2-1. 再把 C:\Users\Administrator\Desktop\freeglut 的 lib 目錄裡,複製一個「libfreeglut.a」,並將其名稱改為「libglut32.a」
2-2. File ⮕ New ⮕ Project,開啟 GLUT project
2-3. Fodler to create project in:(的...)要選目錄是「桌面」,上面的專案名稱 week02_glut_color_teapot
2-4. 選 GLUT 的目錄 C:\Users\Administrator\Desktop\freeglut 就完成了
2-5. 執行時會跳出上週的程式。(開始改程式)
2-6. 左邊 Sources 內的 main.cpp 點開,把上週的10行貼上來。
3. 要設定色彩
3-1. glColor3f(r, g, b);
3-2. 紅(1, 0, 0)、黃(1, 1, 0)、綠(0, 1, 0)、藍(0, 0, 1)、紫(1, 0, 1)
3-3. 可用小畫家, 來畫其他的色彩。使用滴管來吸色, 使用「 編輯色彩」 來查看色彩的值。(需 / 255.0,小數點才不會被抹去)
3-4. 以阿尼亞的色彩為例,兩個不同大小的茶壼,用不同的色彩畫出兩種顏色的效果。
4.畫三角形
4-1. File ⮕ New ⮕ Project,開啟 GLUT project,專案名稱week02_glut_triangle
4-2. 把今天的10行貼下來,再加今天的第2個主角:頂點
4-3. glBegin(GL_POLYGON);
4-4. glColor3f(r, g, b);
4-5. glVertex2f(x, y);
4-6. glEnd();
4-7. 4到6都是期中考試的10題其中的3題,佔30分
4-8. 在真的實作時, 會有很多組 glColor3f(r, g, b); 及 glVertex2f(x, y);
5.用小畫家,找「任意形狀」的頂點座標
5-1. 開啟小畫家,並將圖片放上去。
5-2. 小畫家的座標裡,左上角是 0, 0,右下角是 400, 400 (圖片大小為 400*400 的情況下)
5-3. OpenGL 的座標預設「正中間0, 0」,右邊/上面是 +1,左邊/下面是 -1
5-4. 將小畫家的 (x座標 - 中心點)/200.0 變成 OpenGL的座標(口訣:減一半、再除一半.0)
5-5. y座標則需多加個負號,- (y座標 - 中心點) / 200.0 變成 OpenGL的座標(口訣:減一半、再除一半.0,再加負號)
5-6. File ⮕ New ⮕ Project,開啟 GLUT project,專案名稱week02_glut_mspaint_help_draw
6. 用三角函數畫圈
6-1. File ⮕ New ⮕ Project,開啟 GLUT project,專案名稱 week02_glut_circle_cos_sin
6-2. 改寫 display 第5行
```cpp
for(float a = 0; a <= 3.14*2; a += 0.1){
glVertex2f( r * cos(a)+cx, r * sin(a) + cy );
}
```
7. 用三角函數畫米老鼠
7-1. File ⮕ New ⮕ Project,開啟 GLUT project,專案名
week02_glut_circle_cos_sin
7-2. 修改程式碼,圓的公式另外寫
```cpp
glColor3f(1, 1, 1); myCircle(0, 0, 1);
glColor3f(0, 0, 0); myCircle(-0.5, 0.5, 0.3);
glColor3f(0, 0, 0); myCircle(0.5, 0.5, 0.3);
glColor3f(0, 0, 0); myCircle(0, -0.3, 0.7);
glutSwapBuffers();
```

.png)
.png)
沒有留言:
張貼留言