2023年3月15日 星期三

T-R-T特定轉軸

 https://jsyeh.org/3dcg10/

下載 windows.zip => 下載\windows\Transformation.exe

下載 data.zip    => 下載\windows\data\模型

接著把data放到windows裡面,執行Transformation.exe

藍色車子
調整車子大小
轉動
移動到右邊

將glTranslatef與glRotatel交換順序


旋轉方式與上面那種不同


用茶壺觀察兩種旋轉的差別

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

}

畫出人形,控制手臂旋轉
用codeblocks畫出方塊旋轉
#include <GL/glut.h>
float angle = 0;
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);

            glColor3f(1,0,0);
            glutSolidCube( 0.5 );
        glPopMatrix();
    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();
}



沒有留言:

張貼留言