2017年3月13日 星期一

Week04_魚筆記


#include <GL/glut.h>
static void display(void)
{
    glutSolidTeapot(0.3);
    glutSwapBuffers();
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("04160116 fish");

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



主題 : Mouse互動

1.寫滑鼠的函式,讓程式可以印出滑鼠的座標 0為點下去時的位置,1為放開時的位置

#include <GL/glut.h>
#include <stdio.h> ///printf()
#include <math.h>
void mouse(int button,int state,int x,int y) ///滑鼠的函式
{
    printf("%d %d %d %d\n",button ,state ,x ,y );
}
static void display(void)
{
    glutSolidTeapot(0.3);
    glutSwapBuffers();
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("04160116 fish");

    glutDisplayFunc(display);
    glutMouseFunc(mouse); ///test the mouse function
    ///glutMotionFunc(motion);
    glutMainLoop();
}




2.改變茶壺的顏色,藉由滑鼠點擊來變更滑鼠的顏色

#include <GL/glut.h>
#include <stdio.h> ///printf()
#include <math.h>
void mouse(int button,int state,int x,int y) ///滑鼠的函式
{
    printf("%d %d %d %d\n",button ,state ,x ,y );
    glColor3f(1,x/300.0,y/300.0); ///1紅色、x/300.0綠色、y/300.0藍色,改變茶壺顏色
    glutPostRedisplay();
}
static void display(void)
{
    glutSolidTeapot(0.3);
    glutSwapBuffers();
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("04160116 fish");

    glutDisplayFunc(display);
    glutMouseFunc(mouse); ///test the mouse function
    ///glutMotionFunc(motion);
    glutMainLoop();
}




3.滑鼠可以拖曳

#include <GL/glut.h>
#include <stdio.h> ///printf()
#include <math.h>
void mouse(int button,int state,int x,int y) ///滑鼠的函式
{
    printf("%d %d %d %d\n",button ,state ,x ,y );
    glColor3f(1,x/300.0,y/300.0); ///1紅色為假設(可變更)、x/300.0綠色、y/300.0藍色(除以300是因為視窗大小300*300),改變茶壺顏色
    glutPostRedisplay();
}
void motion(int x, int y)
{
    printf("%d %d\n",x,y);
}
static void display(void)
{
    glutSolidTeapot(0.3);
    glutSwapBuffers();
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("04160116 fish");

    glutDisplayFunc(display);
    glutMouseFunc(mouse); ///test the mouse function
    glutMotionFunc(motion); ///拖曳
    glutMainLoop();
}




4.在拖曳時茶壺顏色可以變,所以glColor要從mouse移到motion那一段程式裡

#include <GL/glut.h>
#include <stdio.h> ///printf()
#include <math.h>
void mouse(int button,int state,int x,int y) ///滑鼠的函式
{
    printf("%d %d %d %d\n",button ,state ,x ,y );
}
void motion(int x, int y)
{
    printf("%d %d\n",x,y);
    glColor3f(1,x/300.0,y/300.0); ///1紅色為假設(可變更)、x/300.0綠色、y/300.0藍色(除以300是因為視窗大小300*300),改變茶壺顏色
    glutPostRedisplay();
}
static void display(void)
{
    glutSolidTeapot(0.3);
    glutSwapBuffers();
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("04160116 fish");

    glutDisplayFunc(display);
    glutMouseFunc(mouse); ///test the mouse function
    glutMotionFunc(motion); ///拖曳
    glutMainLoop();
}






5.劃出一個圓
#include <GL/glut.h>
#include <stdio.h> ///printf()
#include <math.h>
void mouse(int button,int state,int x,int y) ///滑鼠的函式
{
    printf("%d %d %d %d\n",button ,state ,x ,y );
}
void motion(int x, int y)
{
    printf("%d %d\n",x,y);
    glColor3f(1,x/300.0,y/300.0); ///1紅色為假設(可變更)、x/300.0綠色、y/300.0藍色(除以300是因為視窗大小300*300),改變茶壺顏色
    glutPostRedisplay();
}
static void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glBegin(GL_POLYGON); ///實心
    ///glBegin(GL_LINE_LOOP); ///線
        for(float angle=0;angle<3.14159*2;angle+=0.001)
        {
            glVertex2f(0.5*cos(angle),sin(angle));
        }
        glEnd();
    //glutSolidTeapot(0.3);
    glutSwapBuffers();
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("04160116 fish");

    glutDisplayFunc(display);
    glutMouseFunc(mouse); ///test the mouse function
    glutMotionFunc(motion); ///拖曳
    glutMainLoop();
}



#include <GL/glut.h>
#include <stdio.h> ///printf()
#include <math.h>
void mouse(int button,int state,int x,int y) ///滑鼠的函式
{
    printf("%d %d %d %d\n",button ,state ,x ,y );
}
void motion(int x, int y)
{
    printf("%d %d\n",x,y);
    glColor3f(1,x/300.0,y/300.0); ///1紅色為假設(可變更)、x/300.0綠色、y/300.0藍色(除以300是因為視窗大小300*300),改變茶壺顏色
    glutPostRedisplay();
}
static void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    ///glBegin(GL_POLYGON); ///實心
    glBegin(GL_LINE_LOOP); ///線
        for(float angle=0;angle<3.14159*2;angle+=0.001)
        {
            glVertex2f(0.5*cos(angle),sin(angle));
        }
        glEnd();
    //glutSolidTeapot(0.3);
    glutSwapBuffers();
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("04160116 fish");

    glutDisplayFunc(display);
    glutMouseFunc(mouse); ///test the mouse function
    glutMotionFunc(motion); ///拖曳
    glutMainLoop();
}



#include <GL/glut.h>
#include <stdio.h> ///printf()
#include <math.h>
void mouse(int button,int state,int x,int y) ///滑鼠的函式
{
    printf("%d %d %d %d\n",button ,state ,x ,y );
}
void motion(int x, int y)
{
    printf("%d %d\n",x,y);
    glColor3f(1,x/300.0,y/300.0); ///1紅色為假設(可變更)、x/300.0綠色、y/300.0藍色(除以300是因為視窗大小300*300),改變茶壺顏色
    glutPostRedisplay();
}
static void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    ///glBegin(GL_POLYGON); ///實心
    glBegin(GL_LINE_LOOP); ///線
        for(float angle=0;angle<3.14159*2;angle+=0.001)
        {
            glVertex2f(0.5*cos(angle),sin(angle));
        }
        glEnd();
    //glutSolidTeapot(0.3);
    glutSwapBuffers();
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("04160116 fish");

    glutDisplayFunc(display);
    glutMouseFunc(mouse); ///test the mouse function
    glutMotionFunc(motion); ///拖曳
    glutMainLoop();
}

沒有留言:

張貼留言