2023年2月23日 星期四

0.0 week02 點、線、面、色彩

 Week02

STEP01

開啟CODEBLOCK


開專案







打專案名稱 選擇檔案存檔位置



解壓縮freeglut

開啟freeglut>lib>複製libfreeglut>貼上名稱改成libglut32
codeblock選擇freeglut完成>他跑出來就會生成三個神祕圖形

之後把程式碼全部刪掉,改成以下程式碼
#include <GL/glut.h>
void display()
{

        glutSolidTeapot(0.3);
        glutSwapBuffers();
}
int main(int argc,char *argv[])
    {
        glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE| GLUT_DEPTH);
    glutCreateWindow("GLUT Shapes");
    glutDisplayFunc(display);
    glutMainLoop();
    }

就會出現神奇白色茶壺喔


STEP02-1

再把程式把改一下

#include <GL/glut.h>
void display()
{
    glColor3f(1,1,0);///顏色 黃色
    glutSolidTeapot(0.5);///大小
    glColor3f(0,1,0);///顏色 綠色
        glutSolidTeapot(0.3);///大小
        glutSwapBuffers();
}
int main(int argc,char *argv[])
    {
        glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE| GLUT_DEPTH);
    glutCreateWindow("week02");
    glutDisplayFunc(display);
    glutMainLoop();
    }

就會出現兩個茶壺 真的是太神奇了。0.0

STEP02-2
再再把程式碼修改一下

#include <GL/glut.h>
void display()
{

    glColor3f(0,1,0);///綠色
    glBegin(GL_POLYGON);
    glVertex2f(0,1);///上面
    glVertex2f(-1,-1);///左下角
    glVertex2f(+1,-1);///右下角
    glEnd();
     glColor3f(1,1,0);
    glutSolidTeapot(0.3);
        glutSwapBuffers();
}
int main(int argc,char *argv[])
    {
        glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE| GLUT_DEPTH);
    glutCreateWindow("week02");
    glutDisplayFunc(display);
    glutMainLoop();
    }

就會出現綠色三角背景的黃色茶壺。ouo


STEP02-3

再再再把程式碼修改一下

#include <GL/glut.h>
void display()
{

    glColor3f(0,1,0);
    glBegin(GL_POLYGON);
    glColor3f(1,0,0);glVertex2f(0,1);///紅色
    glColor3f(0,1,0);glVertex2f(-1,-1);///綠色
    glColor3f(0,0,1);glVertex2f(+1,-1);///藍色
    glEnd();
     glColor3f(1,1,0);
    glutSolidTeapot(0.3);
        glutSwapBuffers();
}
int main(int argc,char *argv[])
    {
        glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE| GLUT_DEPTH);
    glutCreateWindow("week02");
    glutDisplayFunc(display);
    glutMainLoop();
    }

這樣你就是9ay可以得到彩色的三角形。

STEP02-4

再再再再把程式碼修改很多

#include <GL/glut.h>
#include <math.h>
void mycircle(float r, float x, float y)
{
    glBegin(GL_POLYGON);
    for(float a=0; a<2*3.141592; a+=0.01)
    {
        glVertex2f(r*cos(a)+x,r*sin(a)+y);

    }
    glEnd();
}
void display()
{

    glColor3f(233/255.0,141/255.0,128/255.0);
    mycircle(0.5,0,0);
    glColor3f(1,1,0);
     mycircle(0.3,0.5,0.5);
    glColor3f(1,0,0);
     mycircle(0.3,-0.5,0.5);
     glColor3f(0,1,0);
     mycircle(0.3,-0.5,-0.5);
     glColor3f(0,0,1);
     mycircle(0.3,0.5,-0.5);

        glutSwapBuffers();
}
int main(int argc,char *argv[])
    {
        glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE| GLUT_DEPTH);
    glutCreateWindow("week02");
    glutDisplayFunc(display);
    glutMainLoop();
    }


這樣竟然就可以得出圓形!!!!!!!!!!!!!!太神奇了!!!!!!!!!!!!!!!!
說不定改一下就可以做出奧運了

做出來了彩色

程式碼:
#include <GL/glut.h>
void display()
{
    glColor3f(0,246/255.0,0);
    glBegin(GL_POLYGON);
    glVertex2f((52-100)/100.0,-(35-100)/100.0);
    glVertex2f((135-100)/100.0,-(15-100)/100.0);
    glVertex2f((147-100)/100.0,-(27-100)/100.0);
    glVertex2f((55-100)/100.0,-(46-100)/100.0);
    glEnd();
     glColor3f(0,64/255.0,128/255.0);
    glBegin(GL_POLYGON);
    glVertex2f((111-100)/100.0,-(35-100)/100.0);
    glVertex2f((108-100)/100.0,-(176-100)/100.0);
    glVertex2f((96-100)/100.0,-(176-100)/100.0);
    glVertex2f((90-100)/100.0,-(42-100)/100.0);
    glEnd();
     glColor3f(255/255.0,128/255.0,128/255.0);
    glBegin(GL_POLYGON);
    glVertex2f((107-100)/100.0,-(106-100)/100.0);
    glVertex2f((144-100)/100.0,-(92-100)/100.0);
    glVertex2f((157-100)/100.0,-(102-100)/100.0);
    glVertex2f((110-100)/100.0,-(115-100)/100.0);
    glEnd();
     glColor3f(255/255.0,128/255.0,0);
    glBegin(GL_POLYGON);
    glVertex2f((172-100)/100.0,-(165-100)/100.0);
    glVertex2f((191-100)/100.0,-(181-100)/100.0);
    glVertex2f((27-100)/100.0,-(199-100)/100.0);
    glVertex2f((9-100)/100.0,-(189-100)/100.0);
    glEnd();
     glColor3f(252/255.0,208/255.0,3/255.0);
    glBegin(GL_POLYGON);
    glVertex2f((53-100)/100.0,-(91-100)/100.0);
    glVertex2f((67-100)/100.0,-(96-100)/100.0);
    glVertex2f((66-100)/100.0,-(181-100)/100.0);
    glVertex2f((57-100)/100.0,-(182-100)/100.0);
    glEnd();



        glutSwapBuffers();
}
int main(int argc,char *argv[])
    {
        glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE| GLUT_DEPTH);
    glutCreateWindow("week02");
    glutDisplayFunc(display);
    glutMainLoop();
    }








沒有留言:

張貼留言