2015年3月19日 星期四

week4 鄭庭峰


本周主要是教 移動(Translate)  旋轉(Rotate)  放大縮小(Scale)

一. 使用glTranslate指令來移動物體位置

#include <GL/glut.h>
void display()
{
    glTranslatef(0.5, 0.5, 0); ///移動位置
    glutSolidTeapot(0.3);
    glFlush();
}
int main(int argc, char* argv[])
{
    glutInit(&argc, argv);
    glutCreateWindow("02160111");
    glutDisplayFunc(display);
    glutMainLoop();
}


二. 畫出空心或實心的環狀物體

void display()
{
    ///glutSolidTeapot(0.3);   實心的
    glutWireTorus(0.3, 0.7, 30, 30);  ///空心的 (內半徑,外半徑,橫切,縱切)
    glFlush();
}

三.  可以手動選轉物體

float angle=0;
void display()
{
    ///glutSolidTeapot(0.3);   實心的
    glClear(GL_COLOR_BUFFER_BIT);  ///清畫面
    glRotatef(angle, 1, 1, 0);    ///旋轉
    glutWireTorus(0.3, 0.7, 30, 90);  ///空心的 (內半徑,外半徑,橫切,縱切)
    glFlush();
    angle+=1;  ///角度
}



四.   自動旋轉
        glPushMatrix(); 備份
        glPopMatrix();   還原


float angle=0;
void display()
{
    ///glutSolidTeapot(0.3);   實心的
    glClear(GL_COLOR_BUFFER_BIT);  ///清畫面
    glPushMatrix();   ///因為畫面會亂 所以備份 Matrix

      glRotatef(angle, 1, 1, 0);    ///旋轉
      glutWireTorus(0.3, 0.7, 30, 90);  ///空心的 (內半徑,外半徑,橫切,縱切)

    glPopMatrix();   ///因為畫面會亂 所以還原 Matrix
    glFlush();     /// 要讓畫面出來  把他們沖出來
    angle+=0.1;  ///角度
}




沒有留言:

張貼留言