2017年3月13日 星期一

week03 林憶蓮的上課筆記

hw1:

複習上週在Codeblock中
(1)File>New>Project. 選OpenGL專案>做茶壺


---------------------------------------------------------------------------------------------------------------------
#include <GL/glut.h>
///#include <GLUT/glut.h>//Apple
void display()
{

    glutSolidTeapot(0.3);
    glutSwapBuffers();
}
int main(int argc,char*argv[])
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("04160355 in queen");

    glutDisplayFunc(display);
    ///glutMouseFunc(mouse);
    ///glotMotionFunc(motion);
    glutMainLoop();
}
----------------------------------------------------------------------------------------------------------------------


hw2:
(2)茶壺點擊時顯示座標


------------------------------------------------------------------------------------------------------------------------
#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("04160355 in queen");

    glutDisplayFunc(display);
    glutMouseFunc(mouse); ///test the mouse func
    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);
    glColor3f( 1,x/300.0 , y/300.0);
    glutPostRedisplay(); ///display();///wrong!!!
}

void display()
{

    glutSolidTeapot(0.3);
    glutSwapBuffers();
}

int main(int argc,char*argv[])
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("04160355 in queen");

    glutDisplayFunc(display);
    glutMouseFunc(mouse); ///test the mouse func
    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);
}

void motion(int x, int y)
{ /// Now motion
    printf("%d %d\n",x,y);
    glColor3f( 1,x/500.0 , y/500.0);
    glutPostRedisplay(); ///display();///wrong!!!
}
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); ///big window
    glutCreateWindow("04160355 in queen");

    glutDisplayFunc(display);
    glutMouseFunc(mouse); ///test the mouse func (button)
    glutMotionFunc(motion); ///Now Drag

    glutMainLoop();
}
-------------------------------------------------------------------------------------------------------------------------

(5)利用茶壺圖形再加printf("glVertex2f( %.2f, %.2f);\n",(x-250)/250.0,-(y-250)/250.0 );去點擊外圍形狀,複製作標貼上,即可製作外圍形狀



-------------------------------------------------------------------------------------------------------------------------
#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
    if(state==GLUT_DOWN)printf("glVertex2f( %.2f, %.2f);\n",(x-250)/250.0,-(y-250)/250.0 );
}

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();     ///display();///wrong!!!
}
void display()
{
    glBegin(GL_POLYGON);
    glVertex2f( -0.00, 0.18);
    glVertex2f( 0.22, 0.14);
    glVertex2f( 0.28, -0.02);
    glVertex2f( 0.28, -0.14);
    glVertex2f( 0.19, -0.24);
    glVertex2f( -0.20, -0.22);
    glVertex2f( -0.31, -0.15);
    glVertex2f( -0.43, -0.02);
    glVertex2f( -0.44, 0.06);
    glVertex2f( -0.39, 0.10);
    glVertex2f( -0.27, 0.10);
    glVertex2f( -0.24, 0.11);
    glVertex2f( -0.22, 0.14);
    glVertex2f( -0.02, 0.18);
    glEnd();
    glutSwapBuffers();
}

int main(int argc,char*argv[])
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutInitWindowSize(500,500); ///big window
    glutCreateWindow("04160355 in queen");

    glutDisplayFunc(display);
    glutMouseFunc(mouse); ///test the mouse func (button)
    glutMotionFunc(motion); ///Now Drag

    glutMainLoop();
}
-------------------------------------------------------------------------------------------------------------------------

以下為老師示範↓↓↓




(6)


--------------------------------------------------------------------------------------------------------------------------
#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
    if(state==GLUT_DOWN)printf("glVertex2f( %.2f, %.2f);\n",(x-250)/250.0,-(y-250)/250.0 );
}

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(); ///display();///wrong!!!
}
void display()
{
    glBegin(GL_POLYGON);
    for(float angle=0; angle<3.1415926 *2; angle+= 3.1415926 / 100)
        {
            glVertex2f( 0.5*cos(angle), sin(angle));
        }
    glEnd();
    glutSwapBuffers();
}

int main(int argc,char*argv[])
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutInitWindowSize(500,500); ///big window
    glutCreateWindow("04160355 in queen");

    glutDisplayFunc(display);
    glutMouseFunc(mouse); ///test the mouse func (button)
    glutMotionFunc(motion); ///Now Drag

    glutMainLoop();
}
--------------------------------------------------------------------------------------------------------------------------



---------------------------------------------------------------------------------------------------------------------
#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
    if(state==GLUT_DOWN)printf("glVertex2f( %.2f, %.2f);\n",(x-250)/250.0,-(y-250)/250.0 );
}

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(); ///display();///wrong!!!
}
void display()
{
    glBegin(GL_LINE_LOOP);
    for(float angle=0; angle<3.1415926 *2; angle+= 3.1415926 / 100)
        {
            glVertex2f( 0.5*cos(angle), sin(angle));
        }
    glEnd();
    glutSwapBuffers();
}

int main(int argc,char*argv[])
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutInitWindowSize(500,500); ///big window
    glutCreateWindow("04160355 in queen");

    glutDisplayFunc(display);
    glutMouseFunc(mouse); ///test the mouse func (button)
    glutMotionFunc(motion); ///Now Drag

    glutMainLoop();
}

-----------------------------------------------------------------------------------------------------------------------

沒有留言:

張貼留言