2019年3月7日 星期四

呼呼呼 電腦圖學的世界 Week-03

1.點、線、面、顏色
點擊http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/網頁下載data、win32、glut32.dll檔案
將win32與data壓縮檔解壓縮  data資料夾與glut32.dll檔案丟進windows資料夾裡面


2.實作
在左示窗,按右鍵點 Toggle bit  vertices 可以切Big點  
也可以切換顏色
在右視窗則可以用左鍵切換數字和按右鍵切換形狀
2.延續上次的做法,將GLUT.project打開後,將程式碼打開後刪除

改成
#include <GL/glut.h>
void display()
{
    glutSolidTeapot(0.3);
    glutSwapBuffers();

}
int main(int argc ,char**argv)

{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
    glutCreateWindow("Week03");
    glutDisplayFunc(display);
    glutMainLoop();
}
編譯執行後就可創造出茶壺


程式碼加上glColor3f(1.00,0,1.00)式子的話即可改顏色
例如:
#include <GL/glut.h>
void display()
{

    glColor3f(1.00,0,1.00);//改顏色
    glutSolidTeapot(0.3);//畫實心的茶壺
    glutSwapBuffers();//最後buffer做交換秀出


}
int main(int argc ,char**argv)

{

    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
    glutCreateWindow("Week03");
    glutDisplayFunc(display);
    glutMainLoop();
}
即可創造出有顏色的茶壺

4.回家作業
#include <GL/glut.h>
void display()
{
    glBegin(GL_POLYGON);
    glColor3f(105/255.0,163/255.0,27/255.0);
    glVertex2d((44-100)/100.0,-(15-100)/100.0);
    glVertex2d((40-100)/100.0,-(50-100)/100.0);
    glVertex2d((42-100)/100.0,-(90-100)/100.0);
    glVertex2d((59-100)/100.0,-(137-100)/100.0);
    glVertex2d((88-100)/100.0,-(164-100)/100.0);
    glVertex2d((101-100)/100.0,-(175-100)/100.0);
    glVertex2d((102-100)/100.0,-(174-100)/100.0);
    glVertex2d((113-100)/100.0,-(179-100)/100.0);
    glVertex2d((133-100)/100.0,-(173-100)/100.0);
    glVertex2d((58-100)/100.0,-(19-100)/100.0);
    glVertex2d((94-100)/100.0,-(28-100)/100.0);
    glVertex2d((58-100)/100.0,-(19-100)/100.0);
    glVertex2d((98-100)/100.0,-(33-100)/100.0);
    glVertex2d((125-100)/100.0,-(50-100)/100.0);
    glVertex2d((145-100)/100.0,-(83-100)/100.0);
    glVertex2d((147-100)/100.0,-(93-100)/100.0);
    glVertex2d((157-100)/100.0,-(116-100)/100.0);
    glVertex2d((157-100)/100.0,-(132-100)/100.0);
    glVertex2d((157-100)/100.0,-(134-100)/100.0);
    glVertex2d((155-100)/100.0,-(175-100)/100.0);
    glVertex2d((145-100)/100.0,-(167-100)/100.0);
    glVertex2d((132-100)/100.0,-(173-100)/100.0);
    glEnd();
    glBegin(GL_POLYGON);
    glColor3f(124/255.0,190/255.0,44/255.0);
    glVertex2d((48-100)/100.0,-(13-100)/100.0);
    glVertex2d((91-100)/100.0,-(94-100)/100.0);
    glVertex2d((137-100)/100.0,-(188-100)/100.0);
    glEnd();
    glBegin(GL_POLYGON);
    glColor3f(124/255.0,190/255.0,44/255.0);
    glVertex2d((38-100)/100.0,-(48-100)/100.0);
    glVertex2d((55-100)/100.0,-(56-100)/100.0);
    glVertex2d((70-100)/100.0,-(57-100)/100.0);

    glEnd();
    glBegin(GL_POLYGON);
    glColor3f(124/255.0,190/255.0,44/255.0);
    glVertex2d((38-100)/100.0,-(54-100)/100.0);
    glVertex2d((59-100)/100.0,-(76-100)/100.0);
    glVertex2d((88-100)/100.0,-(95-100)/100.0);
    glEnd();
    glBegin(GL_POLYGON);
    glColor3f(124/255.0,190/255.0,44/255.0);
    glVertex2d((45-100)/100.0,-(107-100)/100.0);
    glVertex2d((96-100)/100.0,-(143-100)/100.0);
    glVertex2d((118-100)/100.0,-(144-100)/100.0);
    glEnd();
    glBegin(GL_POLYGON);
    glColor3f(124/255.0,190/255.0,44/255.0);
    glVertex2d((48-100)/100.0,-(13-100)/100.0);
    glVertex2d((91-100)/100.0,-(94-100)/100.0);
    glVertex2d((137-100)/100.0,-(188-100)/100.0);
    glEnd();
    glBegin(GL_POLYGON);
    glColor3f(124/255.0,190/255.0,44/255.0);
    glVertex2d(-(38-100)/100.0,(48-100)/100.0);
    glVertex2d(-(55-100)/100.0,(56-100)/100.0);
    glVertex2d(-(70-100)/100.0,(57-100)/100.0);

    glEnd();
    glBegin(GL_POLYGON);
    glColor3f(124/255.0,190/255.0,44/255.0);
    glVertex2d(-(38-100)/100.0,(54-100)/100.0);
    glVertex2d(-(59-100)/100.0,(76-100)/100.0);
    glVertex2d(-(88-100)/100.0,(95-100)/100.0);
    glEnd();
    glBegin(GL_POLYGON);
    glColor3f(124/255.0,190/255.0,44/255.0);
    glVertex2d(-(45-100)/100.0,(107-100)/100.0);
    glVertex2d(-(96-100)/100.0,(143-100)/100.0);
    glVertex2d(-(118-100)/100.0,(144-100)/100.0);
    glEnd();





    glutSwapBuffers();



}
int main(int argc ,char**argv)

{

    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
    glutCreateWindow("Week03");
    glutDisplayFunc(display);
    glutMainLoop();

}


沒有留言:

張貼留言