2020年4月22日 星期三

不想想標題 Week09

學習新的物件以及其參數

     

glutSolidSphere(1,slices,stacks);實體圓(半徑,幾片,幾層)

        glutSolidCone(1,1,slices,stacks);實體甜筒(半徑,高度,幾片,幾層)

        glutSolidTorus(0.2,0.8,slices,stacks);實體甜甜圈(內圈半徑,外圈半徑,幾片,幾層)

        glutWireSphere(1,slices,stacks);線體圓(半徑,幾片,幾層)

        glutWireCone(1,1,slices,stacks);線體甜筒(半徑,高度,幾片,幾層)

        glutWireTorus(0.2,0.8,slices,stacks);線體甜甜圈(內圈半徑,外圈半徑,幾片,幾層)


照著之前的茶壺程式碼把正方體、顏色、大小程式碼加入


#include<GL/glut.h>

void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glColor3f(1,0,0);///顏色
        glScalef(0.5,0.2,0.2);///大小
        glutSolidCube(1);///正方體
    glPopMatrix();
    glutSwapBuffers();

}

int main(int argc, char**argv)

{

    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
    glutCreateWindow("week09");

    glutDisplayFunc(display);
    glutMainLoop();

}

做自己的函式簡化程式




#include<GL/glut.h>
void myCube()///做自己的簡化程式
{
    glPushMatrix();///先前程式碼轉移
        glScalef(0.5,0.2,0.2);
        glutSolidCube(1);
    glPopMatrix();
}
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();///再保存一次
        glColor3f(1,0,0);///分別做顏色
        myCube();///引用他
        glTranslatef(0.4,0.1,0);///移動看分別
        glColor3f(0,1,0);
        myCube();
    glPopMatrix();///再保存一次
    glutSwapBuffers();

}

int main(int argc, char**argv)

{

    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
    glutCreateWindow("week09");

    glutDisplayFunc(display);
    glutMainLoop();

}

做變數不斷的自己旋轉


#include<GL/glut.h>
void myCube()
{
    glPushMatrix();
        glScalef(0.5,0.2,0.2);
        glutSolidCube(1);
    glPopMatrix();
}
float angle=0;///設角度變數
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glRotatef(angle,0,0,1);///轉動
        glColor3f(1,0,0);
        myCube();
    glPopMatrix();
    angle++;///每次角度增加
    glutSwapBuffers();

}

int main(int argc, char**argv)

{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
    glutCreateWindow("week09");
    glutIdleFunc(display);///有空時重畫

    glutDisplayFunc(display);
    glutMainLoop();

}


 旋轉的中心放到畫面的中心

開啟檔案觀察旋轉方法

下載>開啟Transformation.exe



#include<GL/glut.h>
void myCube()
{
    glPushMatrix();
        glScalef(0.5,0.2,0.2);
        glutSolidCube(1);
    glPopMatrix();
}
float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

        glColor3f(0,1,0);
        glutSolidCube(0.6);

    glPushMatrix();下禮拜考
        glTranslatef(0.3,0.3,0);///旋轉方法TRT///把下面旋轉中的手臂掛到右上角
        glRotatef(angle,0,0,1);///旋轉
        glTranslatef(0.22,0,0);///
        glColor3f(1,0,0);
        myCube();
    glPopMatrix();
    angle++;
    glutSwapBuffers();

}

int main(int argc, char**argv)

{

    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
    glutCreateWindow("week09");
    glutIdleFunc(display);

    glutDisplayFunc(display);
    glutMainLoop();

}




沒有留言:

張貼留言