2023年3月16日 星期四

91 week05

 到https://jsyeh.org/3dcg10/下載window data.zip再解壓縮,

開啟Transformation.exe檔。

藍車變大及轉動:
藍車移到右邊繞著中心公轉(右鍵swap),tran移到右邊、rotate公轉。
week05-2:
開一個新glut專案
複製貼上week04程式碼
修改程式:
#include <GL/glut.h>
float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    glColor3f(1,0,0);//顏色
    glPushMatrix();
    glRotatef(angle,0,0,1);//改成z軸
    glTranslatef(0.8,0,0);//右邊
    glutSolidTeapot( 0.3 );
    glPopMatrix();

    glColor3f(0,1,0);//顏色
    glPushMatrix();
    glTranslatef(0.8,0,0);//右邊
    glRotatef(angle*1.5,0,0,1);//改成z軸
    glutSolidTeapot( 0.3 );
    glPopMatrix();
    glutSwapBuffers();
    angle++;
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("week04");tr
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop();
}
結果:
2.畫身體、手、頭
先把手丟進程式碼
下面的trans先拉上來並選取,把手移動到中心點位置,
再把rotate拉上來,最後的trans拉上來選取再移動手中心點到身體位置。
week05-2:
程式碼:
#include <GL/glut.h>
float angle=0;
void myCube()
{
    glPushMatrix();
    glScalef(0.5,0.2,0.2);------------------>綠方塊
    glutSolidCube(1);
    glPopMatrix();
}
void display()
{
     glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

     glColor3f(1,1,1);
     glutSolidCube(1);------------------>白身體

     glPushMatrix();
        glTranslatef(0.5,0.5,1);
        glRotatef(angle,0,0,1);
        glTranslatef(0.25,0,0);---------------->右
        glColor3f(0,1,0);
        myCube();
    glPopMatrix();

    glPushMatrix();
        glTranslatef(-0.5,0.5,1);
        glRotatef(angle,0,0,1);
        glTranslatef(0.25,0,0);---------------->左
        glColor3f(0,1,0);
        myCube();
    glPopMatrix();

    glutSwapBuffers();
    angle++;
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("week05");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop();
}
結果:






沒有留言:

張貼留言