##下下周考試 (從下往上寫)
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槽
沒有留言:
張貼留言