2020年3月17日 星期二

week03 Heng's

游標點的茶壺位置座標會顯示出來

沿用上周的茶壺

加入TODO 
加入藍色程式碼

#include <GL/glut.h>
#include <stdio.h>///TODO:為了 printf ()
void display()
{
    glutSolidTeapot( 0.3 );
    glutSwapBuffers();
}
void mouse (int button, int state, int x, int y)///TODO:
{///mouse函式:左0中1右2 ,下:0/上1,x座標,y座標
    printf("%d %d %d %d\n", button,state,x,y);///TODO:測試給你看{值}
}
int main(int argc,  char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week03");

    glutDisplayFunc(display);
    glutMouseFunc(mouse);///TODO:mouse 的函式
    glutMainLoop();
}

茶壺 會跟著滑鼠游標的位置移動

#include <GL/glut.h>
#include <stdio.h>
float teapotX=0, teapotY=0;///TODO2:這裡式-1.0~+1.0的座標
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///TODO2:清背景
    glPushMatrix();///TODO2:備份矩陣
        glTranslatef(teapotX, teapotY, 0);///TODO2:移動
        glutSolidTeapot( 0.3 );
    glPopMatrix();///TODO2:備份矩陣
    glutSwapBuffers();
}
void mouse (int button, int state, int x, int y)
{
    printf("%f %f\n", (x-150)/150.0, (y-150)/150.0);
    teapotX=  (x-150)/150.0;///TODO2:任務:x:0...300 變成-1...+1
    teapotY= -(y-150)/150.0;///TODO2:任務:y:300...0 變成-1...+1
}
int main(int argc,  char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week03");

    glutDisplayFunc(display);
    glutMouseFunc(mouse); 
    glutMainLoop();
}
點座標畫圖
#include <GL/glut.h>
#include <stdio.h>
float teapotX=0, teapotY=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glBegin(GL_POLYGON);
    glVertex2f((55-150)/150.0,-(104-150)/150.0);
    glVertex2f((112-150)/150.0,-(77-150)/150.0);
    glVertex2f((168-150)/150.0,-(75-150)/150.0);
    glVertex2f((224-150)/150.0,-(101-150)/150.0);
    glVertex2f((245-150)/150.0,-(169-150)/150.0);
    glVertex2f((219-150)/150.0,-(223-150)/150.0);
    glVertex2f((156-150)/150.0,-(236-150)/150.0);
    glVertex2f((100-150)/150.0,-(220-150)/150.0);
    glVertex2f((62-150)/150.0,-(179-150)/150.0);
    glVertex2f((60-150)/150.0,-(140-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();
}
-------------------------------------------------------------------------------------------------------------------------

回家作業

長長的程式碼

#include <GL/glut.h>
#include <stdio.h>
#include <math.h>
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glBegin(GL_POLYGON);
    glColor3f(0,0,0); glVertex2f(-1,+1);//左上
    glColor3f(0,1,0); glVertex2f(1,1);//右上
    glColor3f(0,0,1); glVertex2f(+1,-1);//右下
    glColor3f(1,0,0); glVertex2f(-1,-1);//左下
    glEnd();
    glBegin(GL_POLYGON);//四個邊
    glColor3f(30/255.0,175/255.0,22/255.0);
    glVertex2f((61-150)/150.0, - (25-150)/150.0);//top
    glVertex2f((233-150)/150.0, - (25-150)/150.0);//top
    glVertex2f((228-150)/150.0, - (38-150)/150.0);
    glVertex2f((241-150)/150.0, - (24-150)/150.0);
    glVertex2f((245-150)/150.0, - (25-150)/150.0);
    glVertex2f((249-150)/150.0, - (27-150)/150.0);
    glVertex2f((254-150)/150.0, - (29-150)/150.0);
    glVertex2f((259-150)/150.0, - (35-150)/150.0);
    glVertex2f((262-150)/150.0, - (38-150)/150.0);
    glVertex2f((267-150)/150.0, - (43-150)/150.0);
    glVertex2f((271-150)/150.0, - (50-150)/150.0);
    glVertex2f((272-150)/150.0, - (55-150)/150.0);
    glVertex2f((275-150)/150.0, - (65-150)/150.0);//right
    glVertex2f((275-150)/150.0, - (235-150)/150.0);//right
    glVertex2f((273-150)/150.0, - (224-150)/150.0);
    glVertex2f((274-150)/150.0, - (236-150)/150.0);
    glVertex2f((273-150)/150.0, - (243-150)/150.0);
    glVertex2f((271-150)/150.0, - (249-150)/150.0);
    glVertex2f((266-150)/150.0, - (258-150)/150.0);
    glVertex2f((260-150)/150.0, - (263-150)/150.0);
    glVertex2f((254-150)/150.0, - (270-150)/150.0);
    glVertex2f((251-150)/150.0, - (271-150)/150.0);
    glVertex2f((248-150)/150.0, - (272-150)/150.0);
    glVertex2f((244-150)/150.0, - (273-150)/150.0);
    glVertex2f((236-150)/150.0, - (276-150)/150.0);//button
    glVertex2f((62-150)/150.0, - (276-150)/150.0);//button
    glVertex2f((55-150)/150.0, - (273-150)/150.0);
    glVertex2f((48-150)/150.0, - (270-150)/150.0);
    glVertex2f((47-150)/150.0, - (268-150)/150.0);
    glVertex2f((44-150)/150.0, - (268-150)/150.0);
    glVertex2f((41-150)/150.0, - (266-150)/150.0);
    glVertex2f((31-150)/150.0, - (255-150)/150.0);
    glVertex2f((30-150)/150.0, - (253-150)/150.0);
    glVertex2f((29-150)/150.0, - (250-150)/150.0);
    glVertex2f((28-150)/150.0, - (251-150)/150.0);
    glVertex2f((26-150)/150.0, - (246-150)/150.0);
    glVertex2f((23-150)/150.0, - (237-150)/150.0);//left
    glVertex2f((23-150)/150.0, - (62-150)/150.0);//left
    glVertex2f((26-150)/150.0, - (53-150)/150.0);
    glVertex2f((27-150)/150.0, - (52-150)/150.0);
    glVertex2f((28-150)/150.0, - (49-150)/150.0);
    glVertex2f((31-150)/150.0, - (44-150)/150.0);
    glVertex2f((34-150)/150.0, - (39-150)/150.0);
    glVertex2f((39-150)/150.0, - (36-150)/150.0);
    glVertex2f((45-150)/150.0, - (30-150)/150.0);
    glVertex2f((45-150)/150.0, - (32-150)/150.0);
    glVertex2f((46-150)/150.0, - (30-150)/150.0);
    glVertex2f((53-150)/150.0, - (27-150)/150.0);
    glEnd();
    glBegin(GL_POLYGON);
    glColor3f(255.0,255.0,255.0);
    for(float angle=0 ; angle<=3.1415926 * 2 ;angle+=0.001)
    {
    glVertex2f( 0.59*cos(angle) ,0.47*sin(angle) );
    }
    glEnd();
    glBegin(GL_POLYGON);//下
    glColor3f(255.0,255.0,255.0);
    glVertex2f((140-150)/150.0, - (240-150)/150.0);//下頂點
    glVertex2f((143-150)/150.0, - (239-150)/150.0);
    glVertex2f((159-150)/150.0, - (231-150)/150.0);
    glVertex2f((163-150)/150.0, - (229-150)/150.0);
    glVertex2f((170-150)/150.0, - (225-150)/150.0);
    glVertex2f((179-150)/150.0, - (219-150)/150.0);//
    glVertex2f((183-150)/150.0, - (217-150)/150.0);
    glVertex2f((188-150)/150.0, - (214-150)/150.0);
    glVertex2f((197-150)/150.0, - (208-150)/150.0);
    glVertex2f((200-150)/150.0, - (200-150)/150.0);
    glVertex2f((210-150)/150.0, - (194-150)/150.0);//右
    glVertex2f((144-150)/150.0, - (219-150)/150.0);//左
    glEnd();
    glBegin(GL_POLYGON);//L
    glColor3f(30/255.0,175/255.0,22/255.0);
    glVertex2f((90-150)/150.0, - (129-150)/150.0);
    glVertex2f((100-150)/150.0, - (129-150)/150.0);
    glVertex2f((100-150)/150.0, - (169-150)/150.0);
    glVertex2f((90-150)/150.0, - (169-150)/150.0);//L
    glEnd();
    glBegin(GL_POLYGON);//L
    glColor3f(30/255.0,175/255.0,22/255.0);
    glVertex2f((90-150)/150.0, - (169-150)/150.0);
    glVertex2f((90-150)/150.0, - (159-150)/150.0);
    glVertex2f((117-150)/150.0, - (159-150)/150.0);
    glVertex2f((117-150)/150.0, - (169-150)/150.0);//L
    glEnd();
    glBegin(GL_POLYGON);//I
    glColor3f(30/255.0,175/255.0,22/255.0);
    glVertex2f((124-150)/150.0, - (129-150)/150.0);
    glVertex2f((134-150)/150.0, - (129-150)/150.0);
    glVertex2f((134-150)/150.0, - (169-150)/150.0);
    glVertex2f((124-150)/150.0, - (169-150)/150.0);//I
    glEnd();
    glBegin(GL_POLYGON);//N
    glColor3f(30/255.0,175/255.0,22/255.0);
    glVertex2f((141-150)/150.0, - (129-150)/150.0);
    glVertex2f((151-150)/150.0, - (129-150)/150.0);
    glVertex2f((151-150)/150.0, - (169-150)/150.0);
    glVertex2f((141-150)/150.0, - (169-150)/150.0);//N
    glEnd();
    glBegin(GL_POLYGON);//N斜
    glColor3f(30/255.0,175/255.0,22/255.0);
    glVertex2f((151-150)/150.0, - (129-150)/150.0);
    glVertex2f((169-150)/150.0, - (154-150)/150.0);
    glVertex2f((169-150)/150.0, - (169-150)/150.0);
    glVertex2f((151-150)/150.0, - (144-150)/150.0);//N
    glEnd();
    glBegin(GL_POLYGON);//N
    glColor3f(30/255.0,175/255.0,22/255.0);
    glVertex2f((169-150)/150.0, - (129-150)/150.0);
    glVertex2f((179-150)/150.0, - (129-150)/150.0);
    glVertex2f((179-150)/150.0, - (169-150)/150.0);
    glVertex2f((169-150)/150.0, - (169-150)/150.0);//N
    glEnd();
    glBegin(GL_POLYGON);//E
    glColor3f(30/255.0,175/255.0,22/255.0);
    glVertex2f((186-150)/150.0, - (129-150)/150.0);
    glVertex2f((196-150)/150.0, - (129-150)/150.0);
    glVertex2f((196-150)/150.0, - (169-150)/150.0);
    glVertex2f((186-150)/150.0, - (169-150)/150.0);//E
    glEnd();
    glBegin(GL_POLYGON);//E
    glColor3f(30/255.0,175/255.0,22/255.0);
    glVertex2f((186-150)/150.0, - (129-150)/150.0);
    glVertex2f((214-150)/150.0, - (129-150)/150.0);
    glVertex2f((214-150)/150.0, - (138-150)/150.0);
    glVertex2f((186-150)/150.0, - (138-150)/150.0);//E
    glEnd();
    glBegin(GL_POLYGON);//E
    glColor3f(30/255.0,175/255.0,22/255.0);
    glVertex2f((186-150)/150.0, - (144-150)/150.0);
    glVertex2f((214-150)/150.0, - (144-150)/150.0);
    glVertex2f((214-150)/150.0, - (153-150)/150.0);
    glVertex2f((186-150)/150.0, - (153-150)/150.0);//E
    glEnd();
    glBegin(GL_POLYGON);//E
    glColor3f(30/255.0,175/255.0,22/255.0);
    glVertex2f((186-150)/150.0, - (160-150)/150.0);
    glVertex2f((214-150)/150.0, - (160-150)/150.0);
    glVertex2f((214-150)/150.0, - (169-150)/150.0);
    glVertex2f((186-150)/150.0, - (169-150)/150.0);//E
    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();
}
-------------------------------------------------------------------------------------------------------------------------


for(float angle=0 ; angle<=3.1415926 * 2 ;angle+=0.01)
  {
       glVertex2f(0.17*cos(angle)-0.3,0.17*sin(angle));
  }

-------------------------------------------------------------------------------------------------------------------------
顏色
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glBegin(GL_POLYGON);
    glClearColor(206/255.0,123/255.0,93/255.0,1);
    glEnd();
    glutSwapBuffers();
------------------------------------------------------------------------------------------------------------------------
#include <GL/glut.h>
#include <stdio.h>
#include <math.h>

void display()

{
    glClearColor(255,255,255,1);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glBegin(GL_POLYGON);
    glColor3f(0.0,0.0,0.0);
    glVertex2f((280-150)/150.0, - (20-150)/150.0);
    glVertex2f((280-150)/150.0, - (280-150)/150.0);
    glVertex2f((20-150)/150.0, - (280-150)/150.0);
    glVertex2f((20-150)/150.0, - (20-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();
}
-------------------------------------------------------------------------------------------------------------------------

沒有留言:

張貼留言