2020年3月17日 星期二

week03

複習上週

茶壺程式碼
#include <GL / glut.h>
無效的display()
{
    glutSolidTeapot(0.3);
    glutSwapBuffers();
}
int main(int argc,char ** argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow(“ week03”);
    glutDisplayFunc(顯示);  
    glutMainLoop();
}
_________________________________________________________________________________

認識滑鼠左中右

#include <GL / glut.h>
#include <stdio.h>
無效的display()
{
    glutSolidTeapot(0.3);
    glutSwapBuffers();
}
無效鼠標(int按鈕,int狀態,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”);
    glutDisplayFunc(顯示);
    glutMouseFunc(mouse);
    glutMainLoop();
}
加上這四行綠色程式碼就可以知道按滑鼠左:0中:1右:2

_________________________________________________________________________________

茶壺跟著點擊處移動

#include <GL / glut.h>
#include <stdio.h>
浮動茶壺X = 0,茶壺Y = 0;
無效的display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //清背景
    glPushMatrix(); //備份矩陣
        glTranslatef(teapotX,teapotY,0); //移動
        glutSolidTeapot(0.3);
   glPopMatrix(); //備份矩陣
    glutSwapBuffers();
}
無效鼠標(int按鈕,int狀態,int x,int y)
{
    printf(“%f%f \ n”,(x-150)/150.0,(y-150)/150.0);
    teapotX =(x-150)/150.0; //任務X:0〜300變成-1〜+ 1
    teapotY =-(y-150)/150.0; //任務Y:0〜300變成-1〜+ 1
}
int main(int argc,char ** argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow(“ week03”);
    glutDisplayFunc(顯示);
    glutMouseFunc(mouse);
    glutMainLoop();
}
加上綠色程式碼點擊任何一處茶壺就著移動數值左=座標X,右=座標Y

_________________________________________________________________________________

有用標點畫圖

#include <GL / glut.h>
#include <stdio.h>
浮動茶壺X = 0,茶壺Y = 0;
無效的display()
{
    glClearColor(183 / 255.0,203 / 255.0,87 / 255.0,1);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glBegin(GL_POLYGON);
        glColor3f(211 / 255.0,180 / 255.0,113 / 255.0);
        glVertex2f((53-150)/150.0,-(143-150)/150.0);
        glVertex2f(((66-150)/150.0,-(143-150)/150.0);
        glVertex2f(((66-150)/150.0,-(213-150)/150.0);
        glVertex2f((53-150)/150.0,-(220-150)/150.0);
        glVertex2f((98-150)/150.0,-(250-150)/150.0);
        glEnd;
    glutSwapBuffers();
}
無效鼠標(int按鈕,int狀態,int x,int y)
{
   if(state == GLUT_DOWN){
    printf(“ glVertex2f((%d-150)/150.0,-(%d-150)/150.0); \ n”,x,y);
   }
}
int main(int argc,char ** argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow(“ week03”);
    glutDisplayFunc(顯示);
    glutMouseFunc(mouse);
    glutMainLoop();
}
_________________________________________________________________________________

成品-小七員工

#include <GL/glut.h>

#include <stdio.h>


void display()

{

    glClearColor(0/255.0,128/255.0,97/255.0,1);//背景

    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

    glBegin(GL_POLYGON);
        glColor3ub(255,255,255);//白色
        glVertex2f((35-150)/150.0,-(17-150)/150.0);
        glVertex2f((32-150)/150.0,-(19-150)/150.0);
        glVertex2f((30-150)/150.0,-(21-150)/150.0);
        glVertex2f((28-150)/150.0,-(22-150)/150.0);
        glVertex2f((26-150)/150.0,-(26-150)/150.0);
        glVertex2f((26-150)/150.0,-(32-150)/150.0);
        glVertex2f((49-150)/150.0,-(269-150)/150.0);
        glVertex2f((49-150)/150.0,-(272-150)/150.0);
        glVertex2f((51-150)/150.0,-(275-150)/150.0);
        glVertex2f((53-150)/150.0,-(278-150)/150.0);
        glVertex2f((56-150)/150.0,-(280-150)/150.0);
        glVertex2f((60-150)/150.0,-(280-150)/150.0);
        glVertex2f((238-150)/150.0,-(280-150)/150.0);
        glVertex2f((242-150)/150.0,-(278-150)/150.0);
        glVertex2f((245-150)/150.0,-(276-150)/150.0);
        glVertex2f((247-150)/150.0,-(274-150)/150.0);
        glVertex2f((247-150)/150.0,-(267-150)/150.0);
        glVertex2f((269-150)/150.0,-(30-150)/150.0);
        glVertex2f((268-150)/150.0,-(23-150)/150.0);
        glVertex2f((265-150)/150.0,-(20-150)/150.0);
        glVertex2f((262-150)/150.0,-(18-150)/150.0);
        glVertex2f((259-150)/150.0,-(17-150)/150.0);
        glVertex2f((37-150)/150.0,-(144-150)/150.0);
        glVertex2f((259-150)/150.0,-(144-150)/150.0);
        glVertex2f((29-150)/150.0,-(62-150)/150.0);
        glVertex2f((43-150)/150.0,-(216-150)/150.0);
        glVertex2f((267-150)/150.0,-(61-150)/150.0);
        glEnd();
        glBegin(GL_POLYGON);
        glColor3ub(255,255,255);//白色
        glVertex2f((112-150)/150.0,-(280-150)/150.0);
        glVertex2f((185-150)/150.0,-(280-150)/150.0);
        glVertex2f((185-150)/150.0,-(292-150)/150.0);
        glVertex2f((112-150)/150.0,-(292-150)/150.0);
        glEnd();

        glBegin(GL_POLYGON);
        glColor3ub(245,130,31);//橘色
        glVertex2f((66-150)/150.0,-(52-150)/150.0);
        glVertex2f((212-150)/150.0,-(52-150)/150.0);
        glVertex2f((151-150)/150.0,-(98-150)/150.0);
        glVertex2f((161-150)/150.0,-(88-150)/150.0);
        glVertex2f((180-150)/150.0,-(72-150)/150.0);
        glVertex2f((193-150)/150.0,-(63-150)/150.0);
        glVertex2f((144-150)/150.0,-(108-150)/150.0);
        glVertex2f((66-150)/150.0,-(108-150)/150.0);
        glEnd();

        glBegin(GL_POLYGON);
        glColor3ub(237,27,45);//紅色
        glVertex2f((233-150)/150.0,-(49-150)/150.0);
        glVertex2f((233-150)/150.0,-(111-150)/150.0);
        glVertex2f((159-150)/150.0,-(102-150)/150.0);
        glVertex2f((154-150)/150.0,-(108-150)/150.0);
        glVertex2f((150-150)/150.0,-(113-150)/150.0);
        glVertex2f((146-150)/150.0,-(119-150)/150.0);
        glVertex2f((143-150)/150.0,-(124-150)/150.0);
        glVertex2f((140-150)/150.0,-(131-150)/150.0);
        glVertex2f((138-150)/150.0,-(135-150)/150.0);
        glVertex2f((136-150)/150.0,-(139-150)/150.0);
        glVertex2f((134-150)/150.0,-(144-150)/150.0);
        glVertex2f((133-150)/150.0,-(148-150)/150.0);
        glVertex2f((132-150)/150.0,-(153-150)/150.0);
        glVertex2f((131-150)/150.0,-(157-150)/150.0);
        glVertex2f((130-150)/150.0,-(161-150)/150.0);
        glVertex2f((166-150)/150.0,-(96-150)/150.0);
        glVertex2f((171-150)/150.0,-(90-150)/150.0);
        glVertex2f((175-150)/150.0,-(86-150)/150.0);
        glVertex2f((180-150)/150.0,-(82-150)/150.0);
        glVertex2f((185-150)/150.0,-(78-150)/150.0);
        glVertex2f((189-150)/150.0,-(75-150)/150.0);
        glVertex2f((193-150)/150.0,-(72-150)/150.0);
        glVertex2f((199-150)/150.0,-(70-150)/150.0);
        glVertex2f((197-150)/150.0,-(69-150)/150.0);
        glVertex2f((202-150)/150.0,-(66-150)/150.0);
        glVertex2f((208-150)/150.0,-(62-150)/150.0);
        glVertex2f((213-150)/150.0,-(59-150)/150.0);
        glVertex2f((217-150)/150.0,-(57-150)/150.0);
        glVertex2f((222-150)/150.0,-(54-150)/150.0);
        glVertex2f((226-150)/150.0,-(53-150)/150.0);
        glVertex2f((233-150)/150.0,-(59-150)/150.0);
        glVertex2f((233-150)/150.0,-(67-150)/150.0);
        glVertex2f((233-150)/150.0,-(73-150)/150.0);
        glVertex2f((233-150)/150.0,-(79-150)/150.0);
        glVertex2f((233-150)/150.0,-(93-150)/150.0);
        glVertex2f((233-150)/150.0,-(98-150)/150.0);
        glVertex2f((233-150)/150.0,-(102-150)/150.0);
        glVertex2f((233-150)/150.0,-(108-150)/150.0);
        glVertex2f((228-150)/150.0,-(113-150)/150.0);
        glVertex2f((224-150)/150.0,-(115-150)/150.0);
        glVertex2f((220-150)/150.0,-(118-150)/150.0);
        glVertex2f((216-150)/150.0,-(120-150)/150.0);
        glVertex2f((213-150)/150.0,-(124-150)/150.0);
        glVertex2f((210-150)/150.0,-(126-150)/150.0);
        glVertex2f((207-150)/150.0,-(129-150)/150.0);
        glVertex2f((204-150)/150.0,-(132-150)/150.0);
        glVertex2f((201-150)/150.0,-(135-150)/150.0);
        glVertex2f((198-150)/150.0,-(139-150)/150.0);
        glVertex2f((195-150)/150.0,-(145-150)/150.0);
        glVertex2f((193-150)/150.0,-(148-150)/150.0);
        glVertex2f((191-150)/150.0,-(153-150)/150.0);
        glVertex2f((189-150)/150.0,-(158-150)/150.0);
        glVertex2f((189-150)/150.0,-(161-150)/150.0);
        glVertex2f((130-150)/150.0,-(161-150)/150.0);
        glEnd();
        glBegin(GL_POLYGON);
        glColor3ub(237,27,45);
        glVertex2f((121-150)/150.0,-(216-150)/150.0);
        glVertex2f((183-150)/150.0,-(216-150)/150.0);
        glVertex2f((181-150)/150.0,-(288-150)/150.0);
        glVertex2f((118-150)/150.0,-(288-150)/150.0);


        glEnd();

        glBegin(GL_POLYGON);//綠色
        glColor3ub(0,128,97);//E
        glVertex2f((61-150)/150.0,-(168-150)/150.0);
        glVertex2f((74-150)/150.0,-(168-150)/150.0);
        glVertex2f((74-150)/150.0,-(210-150)/150.0);
        glVertex2f((61-150)/150.0,-(210-150)/150.0);
        glEnd();
        glBegin(GL_POLYGON);
        glColor3ub(0,128,97);
        glVertex2f((74-150)/150.0,-(201-150)/150.0);
        glVertex2f((84-150)/150.0,-(201-150)/150.0);
        glVertex2f((84-150)/150.0,-(210-150)/150.0);
        glVertex2f((74-150)/150.0,-(210-150)/150.0);
        glEnd();
        glBegin(GL_POLYGON);
        glColor3ub(0,128,97);
        glVertex2f((74-150)/150.0,-(186-150)/150.0);
        glVertex2f((84-150)/150.0,-(186-150)/150.0);
        glVertex2f((84-150)/150.0,-(194-150)/150.0);
        glVertex2f((74-150)/150.0,-(194-150)/150.0);
        glEnd();
        glBegin(GL_POLYGON);
        glColor3ub(0,128,97);
        glVertex2f((74-150)/150.0,-(168-150)/150.0);
        glVertex2f((84-150)/150.0,-(168-150)/150.0);
        glVertex2f((84-150)/150.0,-(177-150)/150.0);
        glVertex2f((74-150)/150.0,-(177-150)/150.0);
        glEnd();

        glBegin(GL_POLYGON);//L
        glColor3ub(0,128,97);
        glVertex2f((89-150)/150.0,-(168-150)/150.0);
        glVertex2f((102-150)/150.0,-(168-150)/150.0);
        glVertex2f((102-150)/150.0,-(210-150)/150.0);
        glVertex2f((89-150)/150.0,-(210-150)/150.0);
        glEnd();
        glBegin(GL_POLYGON);
        glColor3ub(0,128,97);
        glVertex2f((102-150)/150.0,-(201-150)/150.0);
        glVertex2f((112-150)/150.0,-(201-150)/150.0);
        glVertex2f((112-150)/150.0,-(210-150)/150.0);
        glVertex2f((102-150)/150.0,-(210-150)/150.0);
        glEnd();

        glBegin(GL_POLYGON);//E
        glColor3ub(0,128,97);
        glVertex2f((116-150)/150.0,-(168-150)/150.0);
        glVertex2f((129-150)/150.0,-(168-150)/150.0);
        glVertex2f((129-150)/150.0,-(210-150)/150.0);
        glVertex2f((116-150)/150.0,-(210-150)/150.0);
        glEnd();
        glBegin(GL_POLYGON);
        glColor3ub(0,128,97);
        glVertex2f((129-150)/150.0,-(168-150)/150.0);
        glVertex2f((138-150)/150.0,-(168-150)/150.0);
        glVertex2f((138-150)/150.0,-(177-150)/150.0);
        glVertex2f((129-150)/150.0,-(177-150)/150.0);
        glEnd();
        glBegin(GL_POLYGON);
        glColor3ub(0,128,97);
        glVertex2f((129-150)/150.0,-(185-150)/150.0);
        glVertex2f((138-150)/150.0,-(185-150)/150.0);
        glVertex2f((138-150)/150.0,-(193-150)/150.0);
        glVertex2f((129-150)/150.0,-(193-150)/150.0);
        glEnd();
        glBegin(GL_POLYGON);
        glColor3ub(0,128,97);
        glVertex2f((129-150)/150.0,-(201-150)/150.0);
        glVertex2f((138-150)/150.0,-(201-150)/150.0);
        glVertex2f((138-150)/150.0,-(210-150)/150.0);
        glVertex2f((129-150)/150.0,-(210-150)/150.0);
        glEnd();

        glBegin(GL_POLYGON);//V
        glColor3ub(0,128,97);
        glVertex2f((141-150)/150.0,-(168-150)/150.0);
        glVertex2f((153-150)/150.0,-(168-150)/150.0);
        glVertex2f((157-150)/150.0,-(196-150)/150.0);
        glVertex2f((164-150)/150.0,-(210-150)/150.0);
        glVertex2f((148-150)/150.0,-(210-150)/150.0);
        glEnd();
        glBegin(GL_POLYGON);
        glColor3ub(0,128,97);
        glVertex2f((163-150)/150.0,-(168-150)/150.0);
        glVertex2f((172-150)/150.0,-(168-150)/150.0);
        glVertex2f((164-150)/150.0,-(210-150)/150.0);
        glVertex2f((157-150)/150.0,-(196-150)/150.0);
        glEnd();

        glBegin(GL_POLYGON);//E
        glColor3ub(0,128,97);
        glVertex2f((175-150)/150.0,-(168-150)/150.0);
        glVertex2f((188-150)/150.0,-(168-150)/150.0);
        glVertex2f((188-150)/150.0,-(210-150)/150.0);
        glVertex2f((175-150)/150.0,-(210-150)/150.0);
        glEnd();
        glBegin(GL_POLYGON);
        glColor3ub(0,128,97);
        glVertex2f((188-150)/150.0,-(168-150)/150.0);
        glVertex2f((198-150)/150.0,-(168-150)/150.0);
        glVertex2f((198-150)/150.0,-(177-150)/150.0);
        glVertex2f((188-150)/150.0,-(177-150)/150.0);
        glEnd();
        glBegin(GL_POLYGON);
        glColor3ub(0,128,97);
        glVertex2f((188-150)/150.0,-(185-150)/150.0);
        glVertex2f((198-150)/150.0,-(185-150)/150.0);
        glVertex2f((198-150)/150.0,-(193-150)/150.0);
        glVertex2f((188-150)/150.0,-(193-150)/150.0);
        glEnd();

        glBegin(GL_POLYGON);
        glColor3ub(0,128,97);
        glVertex2f((188-150)/150.0,-(201-150)/150.0);
        glVertex2f((198-150)/150.0,-(201-150)/150.0);
        glVertex2f((198-150)/150.0,-(210-150)/150.0);
        glVertex2f((188-150)/150.0,-(210-150)/150.0);
        glEnd();

        glBegin(GL_POLYGON);//N
        glColor3ub(0,128,97);
        glVertex2f((204-150)/150.0,-(168-150)/150.0);
        glVertex2f((216-150)/150.0,-(168-150)/150.0);
        glVertex2f((216-150)/150.0,-(210-150)/150.0);
        glVertex2f((204-150)/150.0,-(210-150)/150.0);
        glEnd();
        glBegin(GL_POLYGON);
        glColor3ub(0,128,97);
        glVertex2f((216-150)/150.0,-(171-150)/150.0);
        glVertex2f((221-150)/150.0,-(168-150)/150.0);
        glVertex2f((225-150)/150.0,-(167-150)/150.0);
        glVertex2f((228-150)/150.0,-(167-150)/150.0);
        glVertex2f((233-150)/150.0,-(169-150)/150.0);
        glVertex2f((236-150)/150.0,-(173-150)/150.0);
        glVertex2f((236-150)/150.0,-(178-150)/150.0);
        glVertex2f((224-150)/150.0,-(178-150)/150.0);
        glVertex2f((223-150)/150.0,-(177-150)/150.0);
        glVertex2f((221-150)/150.0,-(177-150)/150.0);
        glVertex2f((229-150)/150.0,-(177-150)/150.0);
        glVertex2f((216-150)/150.0,-(179-150)/150.0);
        glEnd();
        glBegin(GL_POLYGON);
        glColor3ub(0,128,97);
        glVertex2f((224-150)/150.0,-(178-150)/150.0);
        glVertex2f((236-150)/150.0,-(178-150)/150.0);
        glVertex2f((236-150)/150.0,-(210-150)/150.0);
        glVertex2f((224-150)/150.0,-(210-150)/150.0);
        glEnd();






    glutSwapBuffers();

}

void mouse (int button, int state, int x,int y)

{

   if(state==GLUT_DOWN){

    printf(" glVertex2f((%d-150)/150.0,-(%d-150)/150.0);\n",x,y);

   }

}

int main(int argc,char ** argv)

{

    glutInit( &argc,argv);

    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("week03");

    glutDisplayFunc(display);

    glutMouseFunc(mouse);

    glutMainLoop();

}

1 則留言: