# week10
## week10-1_glutWireCube_myBody_myArm
0.下載 freeglut 至桌面, 並解壓縮, 更改 lib 中的檔名
1. File-New-project, GLUT專案, week10-1_glutWireCube_myBody_myArm
2. 貼上 week09-3_glutWireTeapot_glutWireCube_glutWireSphere 的程式碼
3. 要把 void display() 改寫一下, 呼叫 myBody() myArm()
```cpp
void myBody(){///我的身體
glPushMatrix();
glColor3f(1, 0, 0);///紅色的
glutWireCube(0.6);///myBody()
glPopMatrix();
}
void myArm(){///我的身體
glPushMatrix();
glColor3f(0, 1, 0);///綠色的
glScalef(1, 0.4, 0.4);///大小
glutWireCube(0.3);///myArm()
glPopMatrix();
}
void display(){
myBody();///我的身體
myArm();///我的手臂
}
```
## week10-2_Rotate_myArm
1. File-New-project, GLUT專案, week10-2_Rotate_myArm
2. 貼上 week10-1 的程式碼
3. 外面加上 float angle = 0; //旋轉角度
4. 在 main() 加上 glutIdleFunc(display); //有空就旋轉
5. 在 display() 裡, myArm() 的前後, 要加上 glPushMatrix() glPopMatrix(), 並加上 Rotate 函式
6. 新增的程式碼如下(橘色部分)
```cpp
float angle = 0;
void display(){
glPushMatrix();
glRotatef(angle++, 0, 0, 1);///旋轉角度
myArm();///我的手臂
glPopMatrix();
}
int main(int argc, char*argv[]){
glutIdleFunc(display);///有空就旋轉
}
```
## week10-3_Rotate_translate_myArm
1. File-New-project, GLUT專案, week10-3_Rotate_translate_myArm
2. 貼上 week10-2 的程式碼
3. 加上 glTranslatef(0.15, 0, 0);
```cpp
void display()
{
glPushMatrix();
glTranslatef(0.15, 0, 0);
glPopMatrix();
}
```
## week10-4_translate_rotate_translate_myArm
1. File-New-project, GLUT專案, week10-4_translate_rotate_translate_myArm
2. 貼上 week10-3 的程式碼
3. 加上最後一行 glTranslatef(0.3, 0.3, 0);
```cpp
void display()
{
glPushMatrix();
glTranslatef(0.3, 0.3, 0);///(3)掛到肩上
glRotatef(angle++, 0, 0, 1);///(2)旋轉角度
glTranslatef(0.15, 0, 0);///(1)把旋轉中心放在左上角
myArm();///我的手臂
glPopMatrix();
}
```
## week10-5_TRT_TRT_myArm
1. File-New-project, GLUT專案, week10-5_TRT_TRT_myArm
2. 貼上 week10-4 的程式碼
3. 把整套 glPusgMatrix(); glTranslatef(); glRotatef(); glTranslatef(); myArm(); glPopMatrix(); 插到中間, 如下所示(橘色部分)
```cpp
glPushMatrix();
glTranslatef(0.3, 0.3, 0);///(3)掛到肩上
glRotatef(angle++, 0, 0, 1);///(2)旋轉角度
glTranslatef(0.15, 0, 0);///(1)把旋轉中心放在左上角
myArm();///我的手臂
glPushMatrix();
glTranslatef(0.15, 0, 0);///(3)掛到肩上
glRotatef(angle++, 0, 0, 1);///(2)旋轉角度
glTranslatef(0.15, 0, 0);///(1)把旋轉中心放在左上角
myArm();///我的手臂
glPopMatrix();
glPopMatrix();
```
## week10-6_laft_right_myArm
1. File-New-project, GLUT專案, week10-6_lrft_right_myArm
2. 貼上 week10-5 的程式碼
## week10-7_mouse_motion_angle_myArm
1. File-New-project, GLUT專案, week10-7_mouse_motion_angle_myArm
2. 貼上 week10-6 的程式碼
3. 想要用 mouse motion 來操控, 所以 angle++ 都改成 angle (不要++)
4. 在 main () 加 glutMotionFunc (motion);
5. 加一個 void motion (int x, int y) 函式
```cpp
void motion(int x, int y){
angle = x;
glutPostRedisplay(); //告訴GLUT, 貼上便利貼, 請GLUT有空時, 就要重畫畫面
}
int main(int argc, char*argv[]){
glutMotionFunc(motion);
}
```
6. 可以利用 mouse 移動手臂
1. File-New-project, GLUT專案, week10-8_mouse_motion_angle_2_myArm
2. 貼上 week10-7 的程式碼
3. 把 display() 裡面的 左邊的 angle 改成 -angle1. File-New-project, GLUT專案, week10-9_playsound
2. 貼上 week10-8 的程式碼
3. 在 include 的地方, 加上 #include <window.h> 或 #include <mmsystem.h>
4. 在 main() 的第1行, 加入 Playsound("你的wav檔.wav", NULL, SND_ASYNC );
5. 把音檔 horse.wav 放在 C:根目錄裡
6. 最後開始執行時會有聲音








沒有留言:
張貼留言