2024年3月2日 星期六

電腦圖學坐牢中 week02

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();

```

沒有留言:

張貼留言