2023年3月16日 星期四

咻碰閃week05

week05

1-1 https://jsyeh.org/3dcg10/  下載data、win32資料夾
1-2 解壓縮windows.zip資料夾,將data資料夾拉進windows資料夾
1-3 點開 Transformation.exe 
1-4 回顧上週
1-5 交換順序
2-1 開codeblocks專案 week05-1_TRT_translate_rotate
複製week04-1程式貼上
2-2 更改程式
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);
        glutSolidTeapot( 0.3);
    glPopMatrix();
    glutSwapBuffers();
    angle++;
3-1 打開老師openGL程式
3-2 執行>ToDraw

3-3
myDrawObject(0);///畫身體
glPushMatrix();
    glTranslatef(0.22,0.16,0);///(3)把手臂掛在肩上
    glRotatef(angle,0,0,1);///(2)轉動
    glTranslatef(-0.41,-0.28,0);///(1)把關節放在正中心
    myDrawObject(1);///畫手臂
glPopMatrix();
4-1 開新專案 week05-2_TRT_robot 貼上week05-1程式,簡化程式
4-2 把關節掛到右上角
4-3相同的程式碼,更改位置,將關節掛到左上角
#include <GL/freeglut.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,0);///掛到右上角
        glRotatef(angle,0,0,1);///轉動
        glTranslatef(0.25,0,0);///讓關節在正中心
        glColor3f(0,1,0);///綠色手臂
        myCube();
    glPopMatrix();

    glPushMatrix();
        glTranslatef(-0.5,0.5,0);///掛到左上角
        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("week04");

glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}




















沒有留言:

張貼留言