2015年3月19日 星期四

02160074_張凱晴 week04

本周重點:移動(Translate)、旋轉(Rotate)、放大縮小(Scale)


1.glTranslatef( x , y , z ); //移動 (float)




2.glutSolidTorus( 內徑r , 外徑R , 橫切 , 縱切 ); //甜甜圈的形狀


3.glRotatef( 角度 , x , y , z ); //旋轉 (float)

Q.畫面會亂掉怎麼辦?
Ans:清畫面 glClear(GL_COLOR_BUFFER_BIT);

4.備份 Matrix:glPushMatrix();
                      //程式放這裡
5.還原 Matrix:glPopMatrix(); 
6.glutIdleFunc(); //空閒時要做的事

程式碼:
#include <GL/glut.h>
float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT);///因為畫面會亂,所以要清畫面
    glPushMatrix();///備份Matrix
        glRotatef(angle,1,1,0);
        glutWireTorus(0.3,0.7,30,30);
    glPopMatrix();///還原Matrix
    glFlush(); ///類似投影片的光,沒打燈會沒畫面
    angle+=0.1;///轉動角度
}
int main(int argc,char**argv)
{
    glutInit(&argc,argv);
    glutCreateWindow("02160074");

    glutDisplayFunc(display);///當電腦需要display的時候,呼叫diplay()
    glutIdleFunc(display); ///空閒時,呼叫display()

    glutMainLoop();
}


沒有留言:

張貼留言