2020年3月24日 星期二

week04

TransFormation

http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/
下載[data] [win32] glut32.dll




windows解壓縮 將data和glut32.dll丟進去(如圖)


開啟Transformation 了解視窗代表的意義 ,旋轉根據安培右手定則旋轉
_________________________________________________________________________________

ROTATE

開啟code 新增GLUT專案(每節課都會做的動作) 增加黃色框框內的程式碼 執行後就可以跟滑鼠移動
_________________________________________________________________________________

用水壺來試試吧

因為可能太難了 老師決定用簡單的方式讓我們了解 打了水壺的程式碼 使用滑鼠讓他轉動 
如下:
#include <GL/glut.h>
float myAngle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glRotatef(myAngle,0,0,1);
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();
}
void motion(int x,int y)
{
    myAngle=x;
    display();
}
int main(int argc, char**argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
    glutCreateWindow("week 04 rotate");

    glutMotionFunc(motion);
    glutDisplayFunc(display);
    glutMainLoop();
}
_________________________________________________________________________________

記住舊的座標點累加

加此段程式碼可以更加控制水壺,記住舊的座標點繼續累加,沒有加這個程式碼的話每按一次滑鼠就得重新來過
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);//加的角度
    oldX=x;//新的角度取代舊的
    display();//每次做動作就重畫
}

沒有留言:

張貼留言