2020年3月24日 星期二

Week04 巧克力珍珠奶茶

1.顯示3D模型

(會顯示出這樣的一個視窗&&有很多模型可以選擇&&老師有教用右手定則來判斷旋轉方向&&老師有親身演示很有趣)

(如圖所示老師有解釋三個單字什麼意思)


(右手定則:其餘四個手指為旋轉方向)


2.修改程式碼


(改了六行程式碼)
PS修改的程式碼:
glutMotionFunc(motion);///TODO:加了mouse motion的函式,可捉mouse的動態
void motion(int x,int y)///TODO:mouse motion現在動到哪裡了
{
     myAngle=x;///TODO:我的角度,就是x的值
}
    const double a = myAngle;///TODO:把角度塞進去
float myAngle=0;///TODO:我們的變數的宣告

(會根據滑鼠的方向旋轉)

3.有變化的茶壺(3-1)

(茶壺會根據滑鼠的方向旋轉,是不是很像在倒茶)
PS程式碼:
#include <GL/glut.h>
float myAngle=0;///TODO:宣告我的角度的變數
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清畫面
    glPushMatrix();
        glRotatef(myAngle, 0,0,1);///TODO:對z軸,做旋轉
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();
}
void motion(int x, int y)
{
    myAngle = x;///TODO:我的角度,等下要拿來用
    display();///TODO:每次做動作,就重畫畫面
}
int main(int argc,char**argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week 04 rotate");

    glutMotionFunc(motion);///加motion函式
    glutDisplayFunc(display);
    glutMainLoop();
}
**一定要寫清畫面的程式碼 不然會有很多個茶壺重影**


4.有變化的茶壺(3-2)

(茶壺會根據滑鼠的方向旋轉,而且能夠停住在原來的位置繼續旋轉)

PS程式碼:
#include <GL/glut.h>
float myAngle=0;///TODO:宣告我的角度的變數
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清畫面
    glPushMatrix();
        glRotatef(myAngle, 0,0,1);///TODO:對z軸,做旋轉
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();
}
int oldX=0;///宣告變數
void mouse(int button, int state ,int x, int y)
{
    if(state==GLUT_DOWN) oldX = x;///按下去時記得你在哪裡
}
void motion(int x, int y)
{
    myAngle += (x-oldX);///TODO:我的角度,等下要拿來用
    oldX = x;
    display();///TODO:每次做動作,就重畫畫面
}
int main(int argc,char**argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week 04 rotate");

    glutMotionFunc(motion);///加motion函式
    glutMouseFunc(mouse);
    glutDisplayFunc(display);
    glutMainLoop();
}
**老師為了讓我們理解還講了大象的笑話**

(茶壺旋轉示意圖)



沒有留言:

張貼留言