2018年3月12日 星期一

Week03#Note!!!


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

Week03

(1)複習(點線面、顏色)
(2)評分介紹:(HW1、HW2)、Q&A
(3)主題:滑鼠(mouse)、鍵盤(keyboard)
(4)主題:移動

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

Homework-1

複習上週作業
開啟CodeBlocks->File->New->Project->GLUT

點線面 畫 天婦羅貼圖
利用小畫家 找顏色、點的位置


--------------------------------------------------------------------------------------------------------------------------
#include <GL/glut.h>
static void display()
{
       glClearColor(255/255.0,218/255.0,185/255.0,1);
       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glBegin(GL_POLYGON);
            glColor3ub(0,0,0);
            glVertex2f((132-150)/150.0,-(53-150)/150.0);
            glVertex2f((131-150)/150.0,-(44-150)/150.0);
            glVertex2f((137-150)/150.0,-(35-150)/150.0);
            glVertex2f((139-150)/150.0,-(26-150)/150.0);
            glVertex2f((130-150)/150.0,-(23-150)/150.0);
            glVertex2f((117-150)/150.0,-(25-150)/150.0);
            glVertex2f((108-150)/150.0,-(31-150)/150.0);
            glVertex2f((114-150)/150.0,-(56-150)/150.0);
        glEnd();
        glBegin(GL_POLYGON);
            glColor3ub(0,0,0);
            glVertex2f((108-150)/150.0,-(31-150)/150.0);
            glVertex2f((90-150)/150.0,-(27-150)/150.0);
            glVertex2f((83-150)/150.0,-(32-150)/150.0);
            glVertex2f((89-150)/150.0,-(42-150)/150.0);
            glVertex2f((98-150)/150.0,-(51-150)/150.0);
            glVertex2f((121-150)/150.0,-(53-150)/150.0);
        glEnd();
        glBegin(GL_POLYGON);
            glColor3ub(0,0,0);
            glVertex2f((98-150)/150.0,-(50-150)/150.0);
            glVertex2f((138-150)/150.0,-(55-150)/150.0);
            glVertex2f((91-150)/150.0,-(68-150)/150.0);
            glVertex2f((86-150)/150.0,-(88-150)/150.0);
            glVertex2f((68-150)/150.0,-(123-150)/150.0);
            glVertex2f((65-150)/150.0,-(137-150)/150.0);
            glVertex2f((67-150)/150.0,-(150-150)/150.0);
            glVertex2f((80-150)/150.0,-(164-150)/150.0);
            glVertex2f((97-150)/150.0,-(171-150)/150.0);
            glVertex2f((121-150)/150.0,-(174-150)/150.0);
            glVertex2f((112-150)/150.0,-(199-150)/150.0);
            glVertex2f((117-150)/150.0,-(218-150)/150.0);
            glVertex2f((128-150)/150.0,-(225-150)/150.0);
            glVertex2f((130-150)/150.0,-(238-150)/150.0);
            glVertex2f((136-150)/150.0,-(234-150)/150.0);
            glVertex2f((141-150)/150.0,-(221-150)/150.0);
            glVertex2f((162-150)/150.0,-(222-150)/150.0);
            glVertex2f((165-150)/150.0,-(240-150)/150.0);
            glVertex2f((176-150)/150.0,-(222-150)/150.0);
            glVertex2f((173-150)/150.0,-(206-150)/150.0);
            glVertex2f((162-150)/150.0,-(179-150)/150.0);
            glVertex2f((186-150)/150.0,-(177-150)/150.0);
            glVertex2f((218-150)/150.0,-(170-150)/150.0);
            glVertex2f((238-150)/150.0,-(155-150)/150.0);
            glVertex2f((243-150)/150.0,-(134-150)/150.0);
            glVertex2f((235-150)/150.0,-(117-150)/150.0);
            glVertex2f((211-150)/150.0,-(99-150)/150.0);
            glVertex2f((176-150)/150.0,-(81-150)/150.0);
            glVertex2f((156-150)/150.0,-(72-150)/150.0);
            glVertex2f((147-150)/150.0,-(65-150)/150.0);
            glVertex2f((138-150)/150.0,-(55-150)/150.0);
            glVertex2f((132-150)/150.0,-(49-150)/150.0);
        glEnd();

        glBegin(GL_POLYGON);
            glColor3ub(255,227,105);
            glVertex2f((83-150)/150.0,-(106-150)/150.0);
            glVertex2f((149-150)/150.0,-(97-150)/150.0);
            glVertex2f((192-150)/150.0,-(101-150)/150.0);
            glVertex2f((216-150)/150.0,-(107-150)/150.0);
            glVertex2f((229-150)/150.0,-(118-150)/150.0);
            glVertex2f((239-150)/150.0,-(132-150)/150.0);
            glVertex2f((231-150)/150.0,-(148-150)/150.0);
            glVertex2f((192-150)/150.0,-(156-150)/150.0);
            glVertex2f((150-150)/150.0,-(156-150)/150.0);
            glVertex2f((111-150)/150.0,-(154-150)/150.0);
            glVertex2f((86-150)/150.0,-(147-150)/150.0);
            glVertex2f((69-150)/150.0,-(137-150)/150.0);
            glVertex2f((72-150)/150.0,-(124-150)/150.0);
            glVertex2f((83-150)/150.0,-(106-150)/150.0);
        glEnd();

        glBegin(GL_POLYGON);
            glColor3ub(0,0,0);
            glVertex2f((129-150)/150.0,-(116-150)/150.0);
            glVertex2f((128-150)/150.0,-(115-150)/150.0);
            glVertex2f((130-150)/150.0,-(119-150)/150.0);
            glVertex2f((134-150)/150.0,-(115-150)/150.0);
            glVertex2f((130-150)/150.0,-(114-150)/150.0);
            glVertex2f((133-150)/150.0,-(116-150)/150.0);
            glVertex2f((132-150)/150.0,-(119-150)/150.0);
            glVertex2f((127-150)/150.0,-(115-150)/150.0);
        glEnd();
        glBegin(GL_POLYGON);
            glColor3ub(0,0,0);
            glVertex2f((194-150)/150.0,-(113-150)/150.0);
            glVertex2f((198-150)/150.0,-(111-150)/150.0);
            glVertex2f((201-150)/150.0,-(114-150)/150.0);
            glVertex2f((199-150)/150.0,-(115-150)/150.0);
            glVertex2f((195-150)/150.0,-(116-150)/150.0);
            glVertex2f((199-150)/150.0,-(116-150)/150.0);
        glEnd();

        glBegin(GL_POLYGON);
            glColor3ub(237,28,36);
            glVertex2f((145-150)/150.0,-(129-150)/150.0);
            glVertex2f((151-150)/150.0,-(135-150)/150.0);
            glVertex2f((161-150)/150.0,-(138-150)/150.0);
            glVertex2f((175-150)/150.0,-(139-150)/150.0);
            glVertex2f((188-150)/150.0,-(129-150)/150.0);
        glEnd();
        glutSwapBuffers();
}
int main(int argc, char*argv[])
{
       glutInit(&argc , argv);
       glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
       glutCreateWindow("GLUT Shapes");
       glutDisplayFunc(display);
       glutMainLoop();
       return EXIT_SUCCESS;

}
--------------------------------------------------------------------------------------------------------------------------

Homework-2


*開啟CodeBlocks->File->New->Project->GLUT
--------------------------------------------------------------------------------------------------------------------------
#include <GL/glut.h>
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glutSolidTeapot(0.3);
    glutSwapBuffers();
}

int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Week03 Mouse操作");
    glutDisplayFunc(display);
    glutMainLoop();
}

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


*修改背景、茶壺顏色
--------------------------------------------------------------------------------------------------------------------------
#include <GL/glut.h>
void display()
{
    glClearColor(1,1,0, 1);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glColor3f(0,1,0);
    glutSolidTeapot(0.3);
    glutSwapBuffers();
}

int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Week03 Mouse操作");
    glutDisplayFunc(display);
    glutMainLoop();

}
--------------------------------------------------------------------------------------------------------------------------


*滑鼠點擊出現座標
--------------------------------------------------------------------------------------------------------------------------
#include <GL/glut.h>
void display()
{
    glClearColor(1,1,0, 1);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glColor3f(0,1,0);
    glutSolidTeapot(0.3);
    glutSwapBuffers();
}
#include <stdio.h>
void mouse(int button, int state, int x, int y)
{
    printf("%d %d %d %d\n",button, state, x, y);
}

int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Week03 Mouse操作");
    glutDisplayFunc(display);
    glutMouseFunc(mouse);
    glutMainLoop();

}

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


*修改跑出 glVertex2f(%f , %f );
--------------------------------------------------------------------------------------------------------------------------
#include <GL/glut.h>
void display()
{
    glClearColor(1,1,0, 1);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glColor3f(0,1,0);
    glutSolidTeapot(0.3);
    glutSwapBuffers();
}
#include <stdio.h>
void mouse(int button, int state, int x, int y)
{
    if(state==GLUT_DOWN)
        printf("glVertex2f(%f, %f);\n",(x-150)/150.0,-(y-150)/150.0);
}

int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Week03 Mouse操作");
    glutDisplayFunc(display);
    glutMouseFunc(mouse);
    glutMainLoop();

}
--------------------------------------------------------------------------------------------------------------------------


*加上motion函式
--------------------------------------------------------------------------------------------------------------------------
#include <GL/glut.h>
void display()
{
    glClearColor(1,1,0, 1);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glColor3f(0,1,0);
    glutSolidTeapot(0.3);
    glutSwapBuffers();
}
#include <stdio.h>
void mouse(int button, int state, int x, int y)
{
    if(state==GLUT_DOWN)
        printf("glVertex2f(%f, %f);\n",(x-150)/150.0,-(y-150)/150.0);
}
void motion(int x, int y)
{
    printf("%d %d\n", x, y);
}
int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Week03 Mouse操作");
    glutDisplayFunc(display);
    glutMouseFunc(mouse);
    glutMotionFunc(motion);
    glutMainLoop();
}
--------------------------------------------------------------------------------------------------------------------------


*像Google地圖一樣拖曳的效果
--------------------------------------------------------------------------------------------------------------------------
#include <GL/glut.h>
float teapotX=0, teapotY=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glTranslatef(teapotX, teapotY, 0);
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();
}
#include <stdio.h>
void mouse(int button, int state, int x, int y)
{
    if(state==GLUT_DOWN)
        printf("glVertex2f(%f, %f);\n",(x-150)/150.0,-(y-150)/150.0);
}
void motion(int x, int y)
{
    teapotX=(x-150)/150.0;
    teapotY= -(y-150)/150.0;
    printf("%d %d\n", x, y);
    glutPostRedisplay();
}
int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Week03 Mouse操作");
    glutDisplayFunc(display);
    glutMouseFunc(mouse);
    glutMotionFunc(motion);
    glutMainLoop();
}
--------------------------------------------------------------------------------------------------------------------------



沒有留言:

張貼留言