2019年4月1日 星期一

week04

week04

主題 : 旋轉Rotate


一、範例

(1)到 這裡 將 data、win32、gult32.dll 下載並解壓縮
(同 week02 一、使用freeglut簡化程式)











(2)即可開啟Transformation.exe












二、滑鼠移動motion

(1)同 week01 第一個GLUT程式相同


(2)刪除原本程式,並加上以下程式碼,滑鼠即可點茶壺移動








(以下為程式碼)

#include <GL/glut.h>
float x=0,y=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glTranslatef((x-150)/150.0,-(y-150)/150.0,0);
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();

}
void motion(int nowx,int nowy)
{
    x=nowx;y=nowy;
    display();
}
int main(int argc,char**argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week04");
    glutDisplayFunc(display);
    glutMotionFunc(motion);

    glutMainLoop();

}




三、滑鼠移、轉



(1)程式碼中增加rotate,即可用滑鼠將茶壺轉動









(以下為程式碼)


#include <GL/glut.h>
float x=0,y=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
    glRotatef(  x  ,0,1,0);        
    glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();



}
void motion(int nowx,int nowy)
{
    x=nowx;y=nowy;
    display();
}
int main(int argc,char**argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week04");
    glutDisplayFunc(display);
    glutMotionFunc(motion);



    glutMainLoop();





}




(可將中間標記地方修改一下,旋轉方向即可改變)


沒有留言:

張貼留言