2017年3月13日 星期一

Week03 奶爸的筆記

HW1

1.一樣先複習上周的茶壺
 先建立一個專案後,依照Week01的步驟製作出專案,並且將程式碼刪除到勝十行
並改為茶壺的程式碼
#include <GL/glut.h>

static void display(void)
{
    glutSolidTeapot(0.3);
    glutSwapBuffers();
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("I am superman 04162753");
    glutDisplayFunc(display);
    glutMainLoop();
}

2.將滑鼠的座標在小黑窗顯示 並且按一下就會有兩個數值

3.加上一段程式碼  並且可以讓茶壺隨著滑鼠點的位置變色
加上:  
    glColor3f(1,x/300.0,y/300.0);
    glutPostRedisplay();    

4.再加上一個函式  讓顏色跟著滑鼠的移動而改變
  加上:
void motion(int x, int y)
{
    printf("%d %d\n",x,y);
    glColor3f(1,x/500.0,y/500.0);
    glutPostRedisplay();
}

5.可以在加上一段程式碼來自己畫圖
  將畫茶壺的那段程式碼複製的座標
  並且頭尾加上: glBegin(GL_TRIANGLE_FAN);
                            glEnd();
6.再加上一段畫圓的函式  就可以設定元的大小及範圍
  (1)畫圓的函式:(這個是畫實心的圓)
  void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glBegin(GL_LINE_LOOP);
    for(float angle=0;angle<3.1415926*2;angle+=0.001){
            glVertex2f(cos(angle),sin(angle));
    }
    glEnd();
    glutSwapBuffers();
}

  (2)畫圓的函式:(這個是畫空心的圓)
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glBegin(GL_POLYGON);
    for(float angle=0;angle<3.1415926*2;angle+=0.001){
            glVertex2f(cos(angle),sin(angle));
    }
    glEnd();
    glutSwapBuffers();
}
8.改數字可以把圓變成是橢圓

沒有留言:

張貼留言