2016年3月8日 星期二

Week 03 魏珩

作業一:

按右鍵點選GL_POINTS,為六個點,右邊綠色數字上可用滑鼠拖曳移動,
來調整顏色及點的位置。
















按右鍵點選GL_LINE,為兩條直線,可更改點、線的顏色及座標。
















按右鍵點選GL_LINE_LOOP,為一個迴圈,最後一個點會與第一個點連起來。
















按右鍵點選GL_LINE_STRIP,最後一個點不會跟第一個點連起來(彩帶)。
















按右鍵點選GL_TRIANGLES,為一個三角形。
















按右鍵點選GL_TRIANGLES_FAN,為一個四邊形,可調整形狀
(每個頂點都可換顏色)。
















按右鍵點選GL_TRIANGLES_STRIP,為一個四邊形,可調整形狀,也可摺疊。
















按右鍵點選GL_QUADS,為一個四邊形,可調整形狀(只有一個顏色)。
















按右鍵點選GL_QUAD_STRIP,為一個x六邊形,可調整形狀(可摺疊)。
















按右鍵點選GL_POLYGON,為一個三角形,跟點選GL_TRIANGLES一樣。
















作業二:


1.  自己做一個三角形(同一個顏色)。
程式碼:
#include <GL/glut.h>
void display()
{
    glBegin(GL_POLYGON);
        glColor3f(0.5, 0.0, 0.3);
        glVertex3f(0.0, 0.0, 0.0);
        glVertex3f(1.0, 0.0, 0.0);
        glVertex3f(1.0, 1.0, 1.0);
    glEnd();
    glutSwapBuffers();
}
int main(int argc, char **argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("hello");
    glutDisplayFunc(display);
    glutMainLoop();
}

















2.  三個點不同顏色
程式碼:
#include <GL/glut.h>
void display()
{
    glBegin(GL_POLYGON);
        glColor3f(0.5, 0.0, 0.3);
        glColor3f(0.5, 0.0, 0.5);  glVertex3f(0.0, 0.0, 0.0);
        glColor3f(1.0, 0.0, 0.3);  glVertex3f(1.0, 0.0, 0.0);
        glColor3f(0.0, 0.5, 0.3);  glVertex3f(1.0, 1.0, 1.0);
    glEnd();
    glutSwapBuffers();
}
int main(int argc, char **argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("hello");
    glutDisplayFunc(display);
    glutMainLoop();
}

















3.  更改背景顏色,glClearColor(0.0, 0.8, 0.5, 1),
最後要加一個  1 。
程式碼:
#include <Gl/glut.h>
void display()
{
    glClearColor(0.0, 0.8, 0.5, 1);
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_POLYGON);
        glColor3f(0.5, 0.0, 0.3);
        glColor3f(0.5, 0.0, 0.5);  glVertex3f(0.0, 0.0, 0.0);
        glColor3f(1.0, 0.0, 0.3);  glVertex3f(1.0, 0.0, 0.0);
        glColor3f(0.0, 0.5, 0.3);  glVertex3f(1.0, 1.0, 1.0);
    glEnd();
    glutSwapBuffers();
}
int main(int argc, char **argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("hello");
    glutDisplayFunc(display);
    glutMainLoop();
}












作業三:

1.  在小畫家按滴管,吸一個顏色,RGB數值記下來。













2.  glClearColor(149/255.0, 86/255.0, 42/255.0, 1);
(記得要除255)














3.  自己做一個圖形
程式碼:
#include <GL/glut.h>
#include <stdio.h>

void display()

{

    glClearColor(149/255.0, 86/255.0, 42/255.0, 1);
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_POLYGON);
        glColor3f(0.0, 0.3, 0.3);
        glVertex3f((165-170)/170.0,-(0-170)/170.0,0.0);
        glVertex3f((0-170)/170.0,-(165-170)/170.0,0.0);
        glVertex3f((335-170)/170.0,-(165-170)/170.0,0.0);
        glVertex3f((48-170)/170.0,-(150-170)/170.0,0.0);
        glVertex3f((215-170)/170.0,-(150-170)/170.0,0.0);
        glVertex3f((288-170)/170.0,-(338-170)/170.0,0.0);
        glVertex3f((48-170)/170.0,-(338-170)/170.0,0.0);
    glEnd();
    glutSwapBuffers();
}
int main(int argc, char **argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("hello");
    glutDisplayFunc(display);
    glutMainLoop();
}














作業四:
查看游標座標位置
新增程式碼:
void mouse(int button, int state, int x, int y)
{
    if(state==GLUT_DOWN)
        printf("      glVertex3f(%d-170)/170.0, -(%d-170/170.0, 0.0);\n", x,y);
}

並且

glutDisplayFunc(display)下面增加改glutMouseFunc(mouse);


沒有留言:

張貼留言