2017年3月13日 星期一

WEEK03 從前有一個下巴叫謝佩,的筆記(゚∀。)


今天要交的是滑鼠移動,以上星期的茶壺作為基礎來做變化


1. 製作出上星期的茶壺


程式碼:

#include <GL/glut.h>
void display()
{
    glutSolidTeapot(0.3);  //做茶壺
    glutSwapBuffers();
}
int main(int argc,char*argv[])
{
    glutInit( &argc,argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);  //出現3D繪圖(顏色/ 雙記憶體)
    glutCreateWindow("04160152 CCE 1 "); //製作一個視窗,後方字串為名稱

    glutDisplayFunc(display); //呼叫display函式
    ///glutMouseFunc(mouse);   //滑鼠事件
    ///glutMotionFunc(motion);
    glutMainLoop(); //迴圈
}


2.開始製作滑鼠事件


///按下滑鼠時state為"0",彈起來為"1",x&y為滑鼠的座標

程式碼:

#include <math.h>
#include <stdio.h>  ///printf()
#include <GL/glut.h>
void mouse(int button, int state , int x, int y)
{
    /// This is mouse function
    printf("%d %d %d %d\n", button, state ,x ,y);
}
void display()
{
    glutSolidTeapot(0.3);
    glutSwapBuffers();
}
int main(int argc,char*argv[])
{
    glutInit( &argc,argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("04160152 CCE 1 ");

    glutDisplayFunc(display);
    glutMouseFunc(mouse);  ///測試 mouse func
    ///glutMotionFunc(motion);
    glutMainLoop();
}



3.滑鼠按下時改變顏色



程式碼:

#include <math.h>
#include <stdio.h> ///printf()
#include <GL/glut.h>
void mouse(int button, int state , int x, int y)
{
    /// This is mouse function
    printf("%d %d %d %d\n", button, state ,x ,y);

      ///按下滑鼠時state為0,放開為1,x&y為滑鼠的座標

    glColor3f(1 ,x/300.0 ,y/300.0); 
    ///召喚顏色,(紅 , 綠  , 藍)

    glutPostRedisplay();

}
void display()
{
    glutSolidTeapot(0.3);
    glutSwapBuffers();
}
int main(int argc,char*argv[])
{
    glutInit( &argc,argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("04160152 CCE 1 ");

    glutDisplayFunc(display);
    glutMouseFunc(mouse);  ///測試mouse func
    ///glutMotionFunc(motion);
    glutMainLoop();
}


4. 當拖曳滑鼠時,茶壺的顏色跟著改變



程式碼:

#include <math.h>
#include <stdio.h> ///printf()
#include <GL/glut.h>
void mouse(int button, int state , int x, int y)
{
    /// This is mouse function
    printf("%d %d %d %d\n", button, state ,x ,y);

      ///按下滑鼠時state為0,放開為1,x&y為滑鼠的座標
}
void motion(int x,int y)
{  ///Now motion
    printf("%d %d\n", x, y);

    glColor3f(1 ,x/500.0 ,y/500.0 );
    ///召喚顏色, 500 for window size

    glutPostRedisplay();
}

void display()
{
    glutSolidTeapot(0.3);
    glutSwapBuffers();
}
int main(int argc,char*argv[])
{
    glutInit( &argc,argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutInitWindowSize(500, 500);  ///視窗大小
    glutCreateWindow("04160152 CCE 1");

    glutDisplayFunc(display);
    glutMouseFunc(mouse);  ///測試mouse func
    glutMotionFunc(motion); ///Now Drag
    glutMainLoop();
}

沒有留言:

張貼留言