2023年2月23日 星期四

week02 余

Week02-1-1

用上週所教的方式開啟GLUT的檔案

然後開啟資料夾中的main.cpp 並修改其中的程式碼

從一百多行的程式碼縮減成一下的程式碼

#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();

}

就會出現下圖的茶壺了~
Week02-1-2
更改茶壺顏色及大小:
將程式碼改為以下的樣子
    glColor3f(1,1,0);///顏色黃色
    glutSolidTeapot(0.5);///畫出實心的大茶壺
    glColor3f(0,1,0);///顏色綠色
    glutSolidTeapot(0.3);///畫出實心的小茶壺
就可以得到大的黃色茶壺和小的綠色茶壺了,如下圖:

Week02-2-1
再重新開啟一個GLUT檔案
複製一樣的程式碼並新增主要的幾個程式碼如下
   glBegin(GL_POLYGON);
        glVertex2f(0,1);///上面
        glVertex2f(-1,-1);///左下角
        glVertex2f(+1,-1);///右下角
    glEnd();
    就會出現酷酷的綠色三角形和茶壺了

Week02-2-2
將程式碼在稍微修改一下後:
把glColor3f放在glVertex2f
就可以更改三角形的顏色了,如下圖

Week02-2-3

做回家作業
開啟新的檔案後並接續上個程式碼套用20個頂點

        glColor3f(1,0,0);glVertex2f((65-100)/100.0, -(53-100)/100.0);
        glColor3f(0,1,0);glVertex2f((34-100)/100.0, -(138-100)/100.0);
        glColor3f(0,0,1);glVertex2f((59-100)/100.0, -(138-100)/100.0);
        glColor3f(1,0,0);glVertex2f((87-100)/100.0, -(53-100)/100.0);
       glColor3f(0,1,0); glVertex2f((0-100)/100.0, -(10-100)/100.0);
       glColor3f(0,0,1); glVertex2f((25-100)/100.0, -(20-100)/100.0);
        glColor3f(1,0,0);glVertex2f((50-100)/100.0, -(30-100)/100.0);
        glColor3f(0,0,1);glVertex2f((75-100)/100.0, -(40-100)/100.0);
       glColor3f(0,0,1); glVertex2f((154-100)/100.0, -(100-100)/100.0);
       glColor3f(1,0,0); glVertex2f((179-100)/100.0, -(100-100)/100.0);
      glColor3f(0,1,0);  glVertex2f((123-100)/100.0, -(77-100)/100.0);
        glVertex2f((100-100)/100.0, -(77-100)/100.0);
       glColor3f(1,0,0); glVertex2f((160-100)/100.0, -(86-100)/100.0);
      glColor3f(0,1,0);  glVertex2f((170-100)/100.0, -(86-100)/100.0);
        glVertex2f((180-100)/100.0, -(67-100)/100.0);
       glColor3f(1,0,0); glVertex2f((190-100)/100.0, -(50-100)/100.0);
      glColor3f(0,1,0);  glVertex2f((53-100)/100.0, -(55-100)/100.0);
        glVertex2f((77-100)/100.0, -(55-100)/100.0);
       glColor3f(1,0,0); glVertex2f((66-100)/100.0, -(22-100)/100.0);
       glColor3f(0,1,0); glVertex2f((44-100)/100.0, -(22-100)/100.0);

我所做的頂點並搭上紅綠藍:如下圖


Week02-3-1
應用更多色彩使用這個程式:
 glColor3f(233/255.0,141/255.0,128/255.0);
結果如下:


Week02-3-2

如何用程式畫出圓:

一樣開啟一個新的GLUT檔案並加入(修改)下列程式
#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();
}
   
結果如下圖:


沒有留言:

張貼留言