2023年3月15日 星期三

week05-T-R-T特定軸轉動

 Week05

去https://jsyeh.org/3dcg10/下載windows data

解壓縮把data放到windows

開啟transformations

1.translatef是移動

2.rotatef是轉動

3.scalef是尺寸x,y,z軸長胖縮小

4.glBegin藍色車子









移動跟轉動對調變成車子在中心
camera繞著他轉


第一個程式
#include <GL/glut.h>
float angle = 0; 
void display()
{

    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); 

    glColor3f(0,1,0);
    glPushMatrix();
        glTranslatef(0.8,0,0);
        glRotatef(angle, 0, 0, 1);
        glutSolidTeapot( 0.3 );
    glPopMatrix();

     glColor3f(1,0,0);
    glPushMatrix();
        glRotatef(angle, 0, 0, 1);
        glTranslatef(0.8,0,0);
        glutSolidTeapot( 0.3 );
    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();

}


綠色紅色茶壺轉動


第二個程式
!!下禮拜要考試!!
 glPushMatrix();
     glTranslatef(0,0,0);   3.最後把轉動的手軸.掛到正確的位置
     glRotatef(angle, 0, 0, 1);   2.轉動,要小心正負號還有轉動軸
     glTranslatef(0,0,0);  1.把手軸中心放到世界中心
     drawHand();
 glPopMatrix();
利用老師的範例按空白鍵轉動,記住要改成英文

所有東西照中心轉動



調整過後在正確位置的手臂
1.先把手移動到中心上
2把轉動移回去
3.把手接回去

第三個程式
#include <GL/glut.h>
float angle = 0; ///step02-1 宣告global全域變數 angle
void display()
{
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); ///清背景

    glColor3f(0,1,0);
    glPushMatrix();
        glutSolidCube(0.5);
        glPushMatrix();
            glTranslatef(0.25,0.25,0);
            glRotatef(angle,0,0,1);
            glTranslatef(0.25,0.25,0);
            ///glTranslatef(0.5,0.5,0);
            glColor3f(1,0,0);
            glutSolidCube(0.5);
    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();

}



紅色手臂接在綠色方塊上













沒有留言:

張貼留言