2018年3月30日 星期五

Week_05丁立宇

主題 T-R-T轉動
階層轉動
(1).找出要改的程式碼
把要做的物體以外的變黑白

把定位左上的程式馬往下移

(2)修改的程式部分!
static void display(void)
{
    const double t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
    const double a = t*90.0;
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glColor3d(1,0,0);
    glPushMatrix();
        //glTranslated(-2.4,1.2,-6);
        //glRotated(60,1,0,0);
        glRotated(a,0,0,1); ///轉動!~~
        glTranslated(-2.4,1.2,-6); ///把物體定位在左上角
        glutSolidSphere(1,slices,stacks);
    glPopMatrix();

    glColor3f(1,1,1);  把下面程式的突變黑

2.茶壺的轉動
老師給的茶壺點及轉動程式碼:
#include  <GL/glut.h>
    float angle=0;///Now: 讓茶壼自動轉動的角度
    void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();///Now:備份矩陣
    glRotatef(angle, 0,0,1);///Now:轉動
    glutSolidTeapot(0.3);
    glPopMatrix();///Now:還原矩陣
        glutSwapBuffers();
}
void motion(int x, int y)
{
    angle=x;///Now: 改變角度
    glutPostRedisplay();///Now: 請 重畫畫面
}
    int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
    glutCreateWindow("Week05 TRT");

    glutDisplayFunc(display);
    glutMotionFunc(motion);///Now:
    glutMainLoop();
}
3.主要三步驟(以想要的地方做轉動)
T-R-T
glTransaltef(移到中心)
glRotate(轉動)
glTranslate(掛上去)

沒有留言:

張貼留言