2019年3月21日 星期四

馬馬JOE的奇幻冒險EP4

電腦圖學   2019-3-21   W5
1.主題:旋轉Rotation
2.實作: glRotatef()
3.滑鼠轉,自動轉
4.先跟上禮拜一樣打開http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/
下在以下三個框起來的網址
5.把window解壓縮至window
6.再把data移到window的資料夾裡
7.再把glut32拉到window的資料夾裡
8.打開一個名叫Transformation的資料
9.在裡面可以改一些數值可以改變方向或形狀
10.glRotate(角度,X軸,Y軸,Z軸)
11.之後要讓茶壺可以旋轉要打開跟上周一樣的程式碼
12.跟上周的步驟一樣上網下載freeglut
13.CodeBlocks也一樣打開GLUT的程式碼然後改成下面的程式
#include <GL/glut.h>
float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glRotatef(angle, 0,1,0);
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();
    angle+=3;
}
int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("06160396-week5");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop();
}
14.這個就會讓茶壺旋轉
15.圖片如下
16.現在要讓茶壺可以轉動然後可以用滑鼠知道滑鼠所點的位置,程式碼如下
#include <GL/glut.h>
float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glRotatef(angle, 0,1,0);
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();
    angle++;
}
void motion(int x,int y)
{
    angle=x;
    display();
}
#include <stdio.h>
void mouse(int button, int state, int x,int y)
{
    printf("%d %d %d %d\n", button, state,x,y);
}
int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("06160396-week5");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMotionFunc(motion);
    glutMouseFunc(mouse);
    glutMainLoop();
}
17.照片如下
出現的第一個數字有0,1,2 分別是滑鼠的左鍵,中鍵,右鍵
第二個數字是0,1
第三個數字是0-300是從左到右的位置
第四個數字是0-300是從上到下的位置

沒有留言:

張貼留言