2015年3月19日 星期四

week04_翁子喻_02160022

今天學習3D物件


1.下載課本範例 http:/jsyeh.org/3dcg10 (FaceBook有連結)
   跑 transformation.exe檔
2.下載freeglut 重複之前上課步驟,開啟codeblock建專案,寫程式碼
#include <GL/glut.h>

void display()
{
    glTranslatef(0.8,0.8,0);///這是week4增加的新指令
    glutSolidTeapot(0.3);
    glFlush();
}
int main(int argc,char**argv)
{
    glutInit(&argc,argv);
    glutCreateWindow("02160022資傳拉拉得第一");

    glutDisplayFunc(display);

    glutMainLoop();
}

3.三D物件-旋轉甜甜圈

#include <GL/glut.h>

void display()
{
    ///glTranslatef(0.8,0.8,0);
    glutSolidTorus(0.3,0.7,30,30); 跑出甜甜圈~~~~

    glFlush();
}
int main(int argc,char**argv)
{
    glutInit(&argc,argv);
    glutCreateWindow("02160022資傳拉拉得第一");

    glutDisplayFunc(display);

    glutMainLoop();
}

#include <GL/glut.h>

void display()
{
    ///glTranslatef(0.8,0.8,0);
    glutWireTorus(0.3,0.7,30,30);空心甜甜圈跑出來了~~~~

    glFlush();
}
int main(int argc,char**argv)
{
    glutInit(&argc,argv);
    glutCreateWindow("02160022資傳拉拉得第一");

    glutDisplayFunc(display);

    glutMainLoop();
}

(內徑r,外徑R,橫切,縱切)

#include <GL/glut.h>

void display()
{
    ///glTranslatef(0.8,0.8,0);
    glutWireTorus(0.3,0.7,30,90);改變縱切值

    glFlush();
}
int main(int argc,char**argv)
{
    glutInit(&argc,argv);
    glutCreateWindow("02160022資傳拉拉得第一");

    glutDisplayFunc(display);

    glutMainLoop();
}

#include <GL/glut.h>

float angle=0;
void display()
{
    glRotatef(angle,1,1,0);
    glutWireTorus(0.3,0.7,30,90); 把甜甜圈變不見
    glFlush();
    angle+=2;
}
int main(int argc,char**argv)
{
    glutInit(&argc,argv);
    glutCreateWindow("02160022資傳拉拉得第一");

    glutDisplayFunc(display);

    glutMainLoop();

}

#include <GL/glut.h>

float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT); 清畫面
    glRotatef(angle,1,1,0);
    glutWireTorus(0.3,0.7,30,90);
    glFlush();
    angle+=2;
}
int main(int argc,char**argv)
{
    glutInit(&argc,argv);
    glutCreateWindow("02160022資傳拉拉得第一");

    glutDisplayFunc(display);

    glutMainLoop();
}


#include <GL/glut.h>

float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT); ///因為畫面會亂,所以(1)清畫面Clear
    glPushMatrix(); ///因為畫面會亂,所以(2)備份Matrix

        glRotatef(angle,1,1,0);
        glutWireTorus(0.3,0.7,30,90);

   glPopMatrix();  ///因為畫面會亂,所以(3)還原Matrix
    glFlush();         ///為了要讓畫面出來,所以把他們沖出來
    angle+=0.1;    
}
int main(int argc,char**argv)
{
    glutInit(&argc,argv);
    glutCreateWindow("02160022資傳拉拉得第一");

    glutDisplayFunc(display); ///當電腦需要Display時,去呼叫的函式 dispaly()

    glutMainLoop(); ///閒閒沒事幹時就呼叫函式 display()
}


沒有留言:

張貼留言