2024年3月14日 星期四

BK Week04

 # Week04

##week04_mouse_glScalef

0. 安裝 freeglut, 不要解壓縮, 直接講壓縮檔中的 freeglut 移到桌面

1. 將 lib 資料夾中的 libfreeglut.a 複製一個, 重新命名為 libglut32.a

2.開啟 CodeBlocks ,新增一個 project 檔案存桌面, 下一步選 freeglut 資料夾

3.輸入 10行程式

4.再加上下面這些程式

    void display(){

        glPushMatrix();

            glScalef(s, s, s);

            glutSolidTeapot(0.3);

        glPopMatrix();

        glutSwapBuffers();

    }

    void motion(int x, int y){

        s = 1 + (x-150)/150.0;

        display();

    }

    int main(int argc, char*argv[]){

        glutMotionFunc(motion);

    }


##week04_keyboard_mouse_motion
1. File_New_Project, GLUT專案 week04_keyboard_mouse_motion
2. 複製11行
3. 加上下面這些程式
        void keyboard(unsigned char key, int x, int y){
        printf("key: %c x: %d y: %d\n", key, x, y);
    }

    int main(int argc, char*argv[]){

        glutKeyboardFunc(keyboard);

    }

4. mouse 放在茶壺的位子按 keyboard 上隨便一個鍵, 會顯示按鍵和座標


5. 然後再增加下面程式, 讓mouse按下時可以旋轉
    float angle = 0, oldX = 0;

    void display()
    {
        glPushMatrix();
            glRotatef(angle, 0, 0, 1);
            glutSolidTeapot(0.3);
        glPopMatrix();
    }

        void mouse(int button, int state, int x, int y){
        oldX = x; ///當mouse按下時,記錄他的位置
    }

    void motion(int x, int y){
        angle += (x-oldX);
        oldX = x;
        display();
    }

    int main(int argc, char*argv[]){

        glutMouseFunc(mouse); ///再加這一行

        glutMotionFunc(motion); ///再加這一行

    }

 ##下載課本範例

1. https://jsyeh.org/3dcg10/

2. 下載 data, win32

3. wiodows.zip 解壓縮至 windows 資料夾

4. 把 data 壓縮檔裡面的 data 資料夾放進 windows 資料夾

5. swap translate/rotate 交換2行

6. 自轉, 公轉


##week04_translate_rotate_scale

1. File_New_Project, GLUT專案 week04_translate_rotate_scale

2. 貼上 week04_keyboard_mouse_motion , 再刪掉一些程式碼

3. 再加上一些東東, 就會得到淡黃色背景綠色茶壺在畫面右邊自己轉



##week04_rotate_translate_scale

1. 把 translaterotate 程式碼交換

2. 得到繞著中心在外圍轉的茶壺

沒有留言:

張貼留言