2017年3月14日 星期二

Week04 陳冠宇


今天我遲到第二節課才到教室

但積極向上的我跟上進度
畫出一個圓

void display()

{
    glBegin(GL_POLYGON);

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

    glEnd();
    glutSwapBuffers();

}

並在main中加上
glutDisplayFunc(display);


然後使用Mouse函式
在main中加入
glutMouseFunc(mouse);

打上

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);
}

mouse函式使用四個int整數
第一個整數button代表滑鼠左(0)中(1)右(2)鍵
第二個整數state代表滑鼠動作按下(0)放開(1)
第三個第四個整數x,y則代表座標

在這邊特別使用printf把四個整數秀出來讓大家更清楚了解函式內容
記得加上include <stido.h>

glColor3f(1,x/300.0,y/300.0);

後方x,y除300.0意義在
此圓視窗為300*300
整數除以浮點數讓後方兩個值會在0~1間


如何不用一直點滑鼠讓他改變顏色?



使用motion函式
在main中加入glutMotionfunc(motion);
函式使用兩個整數int,x座標與y座標

void motion(int x,int y)
{
    glColor3f(1,x/300.0,y/300.0);
    glutPostRedisplay();
}

按下滑鼠後移動座標就可以持續改變顏色

glutPostRedisplay();作用在於
讓程式重覆執行display函式

畫出小精靈式的嘴巴開口


先在外面宣告一個mouth浮點數為0


void motion(int x,int y)
{
    mouth = x/300.0;
    glColor3f(1,x/300.0,y/300.0);
    glutPostRedisplay();
}.

在motion函式中加入mouth=x/300.0;
讓開口跟著滑鼠座標改變大小


void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
///這行每次都必打 清畫面

    glBegin(GL_TRIANGLE_FAN);
///使用TRAINGLE FAN 扇形

    glVertex2f(0,0);
///宣告扇形起始座標為0.0

    for(float angle=0+mouth; angle <= 3.1415926*2-mouth; angle += 0.01)
///畫圓起始點+mouth,結束點-mouth
    {
         glVertex2f(cos(angle),sin(angle));
    }
    glEnd();
    glutSwapBuffers();
}

可愛的小精靈出現ㄌ

沒有留言:

張貼留言