## week10-1_glutWireCube_myBody_myArm
1.建立專案
2.上週09-3貼上
3.把void display()改寫,呼叫myBody() myArm()
```cpp
glPushMatrix();
glColor3f(1,0,0);
glutWireCube(0.6);///mybody
glPopMatrix();
glPushMatrix();
glColor3f(0,1,0);
glScalef(1,0.4,0.4);
glutWireCube(0.3);///myArm
glPopMatrix();
```
##week10-2_rotate_myArm
1.建立專案
2.貼上10-1程式
3.float angle = 0;//旋轉角度
4.在main()加上glutIdleFunc(display);
5.在display() 裡面,myArm()的前後,要加上glPlushMatrix()、glPopMatrix();
##week10-3_Rotate_translate_myArm
1.建立專案
2.貼上10-2程式碼
3.加上glTranslated(0.15,0,0)
```cpp
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
myBody();
glPushMatrix();
glRotatef(angle++,0,0,1);
glTranslatef(0.15,0,1);
myArm();
glPopMatrix();
glutSwapBuffers();
}
```
##week10-4_translate_rotate_myArm
1.建立專案
2.貼上10-3程式碼
3.加上最後一行glTranlatef(0.3,0.3,0);放最上面 掛上去
```cpp
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
myBody();
glPushMatrix();
glTranslatef(0.3,0.3,0);///(3) 掛到肩上
glRotatef(angle++,0,0,1);///(2) 旋轉
glTranslatef(0.15,0,1);///(1) 把旋轉中心,放在畫面的正中心
myArm();
glPopMatrix();
glutSwapBuffers();
}
##week10-5_TRT_myArm
1.建立專案
2.貼上10-4程式碼
3.把整套 glPushMatrix(); glTranslatef() glRotatef() myArm() glPopMatrix() 插在中間
##week10-6_left_right_myArm
1.建立專案
2.貼上10-5程式碼
3.把整套 複製起來貼上去改一個負號
##week10-7_mouse_motion_angle_myArm
1.建立專案
2.貼上10-6程式碼
3.想要用mouse motion 來操控,所以 angle++ 都改成angle
4.在 main() 加 glutMotionFunc(motion);
5.加一個 void motion(int x, int y) 函式
完成拖曳滑鼠控制它
##week10-8_mouse_motion_angle_2_myArm
1.建立專案
2.貼上10-7程式碼
3.把 display() 裡面的左邊的angle 改成 -angle(讓左右角度,正負相反)
```cpp
#include <GL/glut.h>
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();
}
float angle = 0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
myBody();
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();
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();
glutSwapBuffers();
}
void motion(int x,int y) {
angle = x; ///加上mouse motion
glutPostRedisplay();///告訴GLUT有空就重劃畫面
}
int main(int argc, char*argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week10");
glutDisplayFunc(display);
glutMotionFunc(motion);///有空就旋轉
glutIdleFunc(display);
glutMainLoop();
}
##week10-9_PlaySound
1.建立專案
2.貼上10-8程式碼
3.在 #include 的地方,加上 #include <windows.h> 或 #include <mmsystem.h>
4.在 main() 的第1行,加入 Playsound("c:/horse.mav",NULL,SND_ASYNC);
5.把音樂檔放進C槽
```
沒有留言:
張貼留言