2023年3月16日 星期四

於 week05

 Week05


下載老師給的範例
到老師的網頁 https://jsyeh.org/3dcg10/ 下載 win32 和data
解壓縮win32 和 data
將data放入window
打開 Transformation.exe



旋轉茶壺

week05-1


*使用week04-1的程式碼



#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);
        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++;
}
int main(int argc, char* argv[] )
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH);
    glutCreateWindow("week05");

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




轉手

使用老師寫的openglTRT程式


*畫出人跟手
  全部移出去
  拉手進來
  把手移到中心glTranslatef();
  旋轉glRotatef();
  移到要的地方glTranslatef();


week05-2


*先調中心 再轉動 最後掛到對的位子
  glScalef(0.5, 0.2, 0.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, 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("week05");

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






沒有留言:

張貼留言