2018年3月26日 星期一

Week 05 ------ 累

1.
glPushMatrix();
    ///glRotated(60,1,0,0);
    glRotated(a,0,0,1);
    glTranslated(0,1.2,-6);///原本是第一行換到最後一行
    glutSolidCone(1,1,slices,stacks);
glPopMatrix();

2.
#include <GL/glut.h>
float angle=0;///旋轉角度
void motion(int x,int y)///mouse motion拖動時呼叫
{
    angle=x;///直接把mouse座標變為轉動角度
    glutPostRedisplay();///重畫
}
void display()///畫面display呼叫
{
    glCear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);///先清畫面
    glPushMatrix();///備份矩陣
        glRotatef(angle,0,0,1);/// rotate/translate/scale都會把矩陣改變
        glTranslatef(0.45,-0.08,0);///移動茶壺的柄到畫面中心
        glutSolidTeapot(0.3);///把茶壺的柄放到畫面中心
    glPopMatrix();///還原矩陣
    glutSwapBuffers();
}

3.
void display()
{
    glCear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

    glPushMatrix();///備份矩陣
        glutSolidTeapot(0.3);


        glPushMatrix();///上手臂
            glTranslatef(0.5,0.15,0);///把會旋轉的柄放到右上角
            glRotatef(angle,0,0,1);///把整個對畫面中心做旋轉
            glTranslatef(0.45,-0.08,0);///移動茶壺的柄到畫面中心
            glutSolidTeapot(0.3);///把茶壺的柄放到畫面中心

             glPushMatrix();///下手肘
                glTranslatef(0.5,0.15,0);///把會旋轉的柄放到右上角
                glRotatef(angle,0,0,1);///把整個對畫面中心做旋轉
                glTranslatef(0.45,-0.08,0);///移動茶壺的柄到畫面中心
                glutSolidTeapot(0.3);///把茶壺的柄放到畫面中心
             glPopMatrix();///還原矩陣
        glPopMatrix();///還原矩陣


        glPushMatrix();///上手臂
            glTranslatef(-0.5,0.15,0);///把會旋轉的柄放到左上角
            glRotatef(angle,0,0,1);///把整個對畫面中心做旋轉____angle可加上負號
            glTranslatef(-0.45,-0.08,0);///移動茶壺的柄到畫面中心
            glutSolidTeapot(0.3);///把茶壺的柄放到畫面中心

             glPushMatrix();///下手肘
                glTranslatef(-0.5,0.15,0);///把會旋轉的柄放到左上角
                glRotatef(angle,0,0,1);///把整個對畫面中心做旋轉____angle可加上負號
                glTranslatef(-0.45,-0.08,0);///移動茶壺的柄到畫面中心
                glutSolidTeapot(0.3);///把茶壺的柄放到畫面中心
            glPopMatrix();///還原矩陣
        glPopMatrix();///還原矩陣


    glPopMatrix();///還原矩陣
    glutSwapBuffers();
}

沒有留言:

張貼留言