2024年2月26日 星期一

SY-BlingBangBang電腦圖學🎬-Week02

 1.下載課本的範例 https://jsyeh.org/3dcg10/ 👉 [data][win32]

   (1) 將windows.zip解壓縮,並將data.zip的data拉到windows資料夾

    (2) 執行Sapes.exe

2. 寫程式,試試看點線面色彩

    step1; 下載 freeglut-MinGW-3.0.0-1.mp.zip 

    step2: 進到資料夾,把檔案 freeglut 拉到桌面

    step3: 點進 freeglut 👉 lib 資料夾

    step4: 複製 libfreeglut.a 並且改名為libglut32.a

    step5: 開啟code blocks

    step6: 選擇File 👉 new 👉 project 👉 GLUT 👉 專案名稱:                                             week02_glut_color_teapot 👉路徑選擇:桌面-freeglut 👉 執行 

              (Build and Run)

    step7: 執行時會跳出上週的程式,接著改寫程式!!

              左邊的Sources的main.cpp點開,再把上週的10行程式碼貼上

    step8: 修改第15行的檔案名稱 week02_glut_color_teapot ,第5行加上 glColor3f                  的程式


    step9: 可修改glColor3f的數值,變成不同的顏色


3. 要設定色彩,老師利用學長姐畫的阿尼亞作範例

    (0,1,0) 綠色、(1,0,0) 紅色、(0,0,1) 藍色(1,1,0) 黃色

    step1: 若是要改變顏色,可利用小畫家的滴管知道顏色的RGB,再將數值放到 glColor3f                 裡,將數值除以255.0,小數點不可省略。

    step2: 再製作一個小茶壺在大茶壺裡面,兩個不同的茶壺,用不同的顏色,畫出兩色的效                 


4. 出三角形

    step1: 開新的GLUT專案,專案名稱week02_glut_triangle

    step2: 將week02_glut_color_teapot的程式碼貼上

    step3: 刪掉5~9行

    step4: 加上GL_POLYGON的程式,畫出一個三角形,顏色有三種顏色

    註1: 頂點 👉glBegin(GL_POLYGON);

                   👉glColor3f(r,g,b);

                   👉glVertex2f(x,y);

                   👉glEnd();

    註2: 以上是期中考試的10題其中的3題,佔30分。

           在真的實作時,會有很多組 glColor3f(r,g,b) ; 以及glVertex2f(x,y) ; 

5. 用小畫家,幫我們找到 "任意形狀" 的頂點座標 (範例取自阿尼亞的圖片)

    step1: 開啟小畫家,把圖片放上去

    step2: 小畫家的座標裡,左上角是 (0,0),右下角是 (400,400) (假設圖片寬度400、                 高度400)

    註: 座標 OpenGL 預設是 "正中間0,0" 右邊是+1,左邊是-1,上面是+1,下面是-1。

    step3: 假設圖片寬度400、高度400

               👉把小畫家的 (x座標-中心點200)/200.0,-(y座標-中心點200)/200.0 變成   

                    OpenGL的座標

    註: 口訣 👉減一半、除一半,在加正負號

    step4: 開新的GLUT專案,專案名稱week02_glut_mspaint_help_draw


6. 用三角函數畫圓

    step1: 開新的GLUT專案,專案名稱week02_glut_circle_cos_sin

    step2: 改寫 display 第5行再 include 數學函式

              display 👉 for(float a=0; a<=3.14*2; a+=0.1){

                                    glVertex2f( r*cos(a)+cx, r*sin(a)+cy );

                               }///三角函數超好用,x=cos(a), y=sin(a)

              include 👉 #include <math.h>

    註1: X 👉 cos(a) 乘上某數可調整圓上下距離的大小,加某數,可在X軸位移

           Y 👉 sin(a) 乘上某數可調整圓左右距離的大小,加某數,可在Y軸位移

           a 👉 角度


7. 用三角函數畫米老鼠

    step1: 同個GLUT專案,專案名稱week02_glut_circle_cos_sin

    step2: 修改程式碼,圓的公式用另外的函式寫,將要畫的座標寫在display

              void myCircle 👉 void myCircle(float cx, float cy, float r)

                                        {

                                                glBegin(GL_POLYGON);

                                                for(float a=0; a<=3.14*2; a+=0.1){

                                                glVertex2f( r*cos(a)+cx, r*sin(a)+cy );

                                        }///三角函數超好用,x=cos(a), y=sin(a)

                                                glEnd();

                                        }

              void display 👉 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();


沒有留言:

張貼留言