2024年4月25日 星期四

YT's 電腦圖學 Week10

##下下周考試 (從下往上寫)

 glPushMatrix();

        glTranslatef(0.3, 0.3, 0); ///Step3:手臂移到肩上

        glRotatef(angle++,0,0,1); ///Step2:旋轉的角度 (正改負 負改正)

        glTranslatef(0.15,0,0); ///Step1:(右移)把旋轉中心放在畫面正中心

        (正改負 負改正)

        myArm();

glPopMatrix();



 #week10-1_glutWireCube_myBody_myArm 

0. 安裝freeglut

1. 貼上上週的week09-3_glutWireTeapot_glutWireCube_glutWireSphere的程式碼


2. 要把 void display() 改寫一下,呼叫 myBody()、myArm()


void myBody()
{
    glPushMatrix();
        ///glTranslatef(0.0,-0.3,0);
        glColor3f(1,0,0); ///red
        glutWireCube(0.6); ///myBody()
glPopMatrix();
}
void myArm(){

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






 #week10-2_rotate_myArm 

1. 貼上week10-1程式碼

2. 外面加上 float angle=0; //旋轉的角度

3. 在 main() 加上 glutIdleFunc(display); //有空就旋轉

4. 在 display() 裡,myArm() 的前後要加上 glPushMatrix(); 和 glPopMatrix();及旋轉

glRotatef(angle++,0,0,1);

綠色方塊就會轉動






 #week10-3_rotate_translate_myArm 

1. 貼上week10-2程式碼

2. 在旋轉下加上一行移動的程式碼 glTranslatef(0.15,0,0);






 #week10-4_translate_rotate_translate_myArm 

1. 貼上week10-3程式碼

2. 加上最後一行,glTranslatef(0.3, 0.3, 0); 放最上面(Step1上)






 #week10-4_TRT_TRT_myArm 

1. 貼上 week10-4程式碼

2. 把整套程式碼插入

        glPushMatrix();
            glTranslatef(0.15, 0, 0); ///Step3:手臂移到肩上
            glRotatef(angle++,0,0,1); ///Step2:旋轉的角度
            glTranslatef(0.15,0,0); ///Step1:(右移)把旋轉中心放在畫面正中心
            myArm();
        glPopMatrix();
  





 #week10-6_left_right_myArm 

1. 貼上week10-5程式碼

2. 加上左半邊的手臂 (記得加負號!)







 #week10-7_mouse_motion_angle_myArm 

1. 貼上week10-6程式碼

2. 把 angle++ 都改成 angle --> 要改用滑鼠操控

(變成angle時的畫面)

3. 在 main() 加上 glutMotionFunc(motion);

4. 加一個 void motion(int x, int y) 函式

void motion(int x, int y){
    angle = x;
    glutPostRedisplay(); //告訴GLUT,貼上便利貼,請GLUT有空時,就要重畫畫面
}

(拖曳滑鼠就可以轉動手臂)






 #week10-8_mouse_motion_angle_2_myArm 

1. 貼上 week10-7程式碼

2. 把 display() 裡面,左邊的 angle 改成 -angle 動作就會變對稱 (讓左右的角度正負相反)








 #week10-9_PlaySound 

1. 貼上week10-8程式碼

2. 在 #include 的地方,加上 #include <windows.h> 或 #include <mmsystem.h>

3. 在 main() 的第一行,加入 PlaySound("你的 wav檔 .wav", NULL, SND_ASYNC);

4. 把老師的 horse.wav 檔,放到C槽



 ! 檔案要 wav 檔才可以 (mp3不行)





























沒有留言:

張貼留言