2024年4月25日 星期四

電腦圖學 Week10 🥴

week10-1_glutWireCube_mybody_myArm

1. moodle下載 freeglut 拖到桌面

2. 把桌面\freglut\lib\libfreeglut.a 複製成 libglut32.a

3. CodeBlocks開GLUT專案, 目錄選桌面, 專案名取week10-1_glutWireCube_mybody_myArm

4. GLUT要選桌面的 freeglut

5. 貼上上週week09-3的程式碼

6. display裡只留下wirecube程式碼, 大小改成1

4. 再加上另一個綠色方形當成手臂

void myArm()
{
    glPushMatrix();
        glColor3f(0,1,0);
        glScalef(1, 0.4 ,0.4);
        glutWireCube(0.3);///myArm()
    glPopMatrix();
}

5. 原本的方框改成紅色當身體
void myBody()
{
    glPushMatrix();
        glColor3f(1,0,0);
        glutWireCube(0.6);///myBody()
glPopMatrix();
}

week10-2_rotate_myArm

1.CodeBlocks開GLUT專案, 目錄選桌面, 專案名取week10-2_rotate_myArm

2. GLUT要選桌面的 freeglut

3. 貼上上一個week10-1的程式碼

4. 加上程式碼讓中間綠色方塊旋轉
float angle = 0;///旋轉的角度

5. display裡加:
glPushMatrix();
    glRotatef(angle++, 0, 0, 1);
    myArm();
glPopMatrix();

6. main函式裡加:
glutIdleFunc(display);///有空就旋轉

week10-3_rotate_translate_myArm

1.CodeBlocks開GLUT專案, 目錄選桌面, 專案名取week10-3_rotate_translate_myArm

2. GLUT要選桌面的 freeglut

3. 貼上上一個week10-2的程式碼

4. 加上程式碼把綠色方塊右移, 並讓旋轉中心放到正中心
glTranslatef(0.15, 0, 0);///右移

week10-4_translate_rotate_translate_myArm

1.CodeBlocks開GLUT專案, 目錄選桌面, 專案名week10-4_translate_rotate_translate_myArm

2. GLUT要選桌面的 freeglut

3. 貼上上一個week10-3的程式碼

4. 加上程式碼把綠色方塊移
glTranslatef(0.3, 0.3, 0);///(3)把旋轉中的東西掛到肩上

小考: T-R-T 轉動

glPushMatrix();

    glTranslatef(0.3, 0.3, 0);///(3)把旋轉中的東西掛到肩上

    glRotatef(angle++, 0, 0, 1);///(1)旋轉

    glTranslatef(0.15, 0, 0);///(2)移動旋轉中心

    myArm();

glPopMatrix();

week10-5_TRT_TRT_myArm

1.CodeBlocks開GLUT專案, 目錄選桌面, 專案名week10-5_TRT_TRT_myArm

2. GLUT要選桌面的 freeglut

3. 貼上上一個week10-4的程式碼

4. 在myArm下面加上重複一段程式碼就可以再新增一段手臂
glPushMatrix();
    glTranslatef(0.3, 0.3, 0);///(3)掛到肩上
    glRotatef(angle++, 0, 0, 1);///(1)旋轉
    glTranslatef(0.15, 0, 0);///(2)移動旋轉中心
    myArm();///右上手臂
    glPushMatrix(); ///多新增的一段
        glTranslatef(0.15, 0, 0);///(3)掛到手肘上
        glRotatef(angle++, 0, 0, 1);///(1)旋轉
        glTranslatef(0.15, 0, 0);///(2)移動旋轉中心
        myArm();///右下手臂
    glPopMatrix();
glPopMatrix();

week10-6_left_right_myArm

1.CodeBlocks開GLUT專案, 目錄選桌面, 專案名week10-6_left_right_myArm

2. GLUT要選桌面的 freeglut

3. 貼上上一個week10-5的程式碼

4. 在右手下面加上複製一段程式碼並改一下座標就能變左手
glPushMatrix();
    glTranslatef(-0.3, 0.3, 0);///(3)掛到肩上
    glRotatef(angle++, 0, 0, 1);///(1)旋轉
    glTranslatef(-0.15, 0, 0);///(2)移動旋轉中心
    myArm();///我的左上手臂
    glPushMatrix();
        glTranslatef(-0.15, 0, 0);///(3)掛到手肘上
        glRotatef(angle++, 0, 0, 1);///(1)旋轉
        glTranslatef(-0.15, 0, 0);///(2)移動旋轉中心
        myArm();///我的左下手臂
    glPopMatrix();
glPopMatrix();

week10-7_mouse_motion_angle_myArm

1.CodeBlocks開GLUT專案, 目錄選桌面, 專案名week10-7_mouse_motion_angle_myArm

2. GLUT要選桌面的 freeglut

3. 貼上上一個week10-6的程式碼

4. 把4個angle++都改成angle(用滑鼠操控)

5. 在main()加上一行程式碼
glutMotionFunc(motion);///加上mouse motion

6. 加一個 motion 函式
void motion(int x, int y)
{
    angle = x;
    glutPostRedisplay();
}

7. 最後可以用滑鼠拖曳讓手臂擺動

week10-8_mouse_motion_angle_2_myArm

1.CodeBlocks開GLUT專案, 目錄選桌面, 專案名week10-8_mouse_motion_angle_2_myArm

2. GLUT要選桌面的 freeglut

3. 貼上上一個week10-7的程式碼

4. 把 display() 裡的左手的兩個 angle 改成 -angle

week10-9_PlaySound

1. CodeBlocks開GLUT專案, 目錄選桌面, 專案名 week10-9_PlaySound

2. GLUT要選桌面的 freeglut

3. 貼上上一個 week10-7 的程式碼

4. 在 #include 的地方, 加上 #include<mmsystem.h>

5. 把音檔放在 C:/ 根目錄裡

6. 在main() 的第一行, 加上程式碼
PlaySound("C:/horse.wav", NULL, SND_ASYNC);

7. 執行時會有馬的聲音

沒有留言:

張貼留言