2017年3月28日 星期二

Week 6 - 文郁上課誌

2017電腦圖學


2017 / 03 / 28
1. 期中考題
2. 主題 : 階層轉動
3. 實作 : T - R - T
4. 複習 : 矩陣
5. 回家作業


TODO : (1) 在Blog中練習期中考題

glPushMatrix( );  //備份矩陣  
    glTranslatef ( x,y,z );  //移動
    glRotatef ( 角度,x,y,z );  //旋轉
    glScalef ( x,y,z );  //縮放
    glBegin ( GL_POLYGON );  //開始畫
           glNormal3f ( nx,ny,nz );  //打光法向量
           glTexCoord2f ( tx,ty );  //貼圖座標
           glColor3f ( r,g,b ); //顏色
           glVertex3f ( x,y,z );  //頂點
glEnd(); //結束畫
glPopMatrix();  //還原矩陣 



TODO : (2T-R-T轉動

茶壺模擬機器手臂





茶壺貼再一起



#include <GL/glut.h>

float mouseX=0;

void display(void)

{    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

   
 glPushMatrix();
        glRotatef(mouseX,0,0,1);        glColor3f(1,0,0);
        glutSolidTeapot(0.3);
 //製作出紅色且可以轉動的茶壺

        
glPushMatrix();
            
glTranslatef(0.5,0.14,0); //將白色茶壺移置紅色茶壺的壺嘴

            glRotatef(mouseX,0,0,1); //使白色茶壺可以轉動

            glTranslatef(0.41,-0.05,0); //將把手移至轉盤的中心

            
glColor3f(1,1,1);
            glutSolidTeapot(0.3);
        glPopMatrix();
    glPopMatrix();

    glutSwapBuffers();

}

void motion(int x,int y)

{

    mouseX=x;

    glutPostRedisplay();

}

int main(int argc, char *argv[])

{

    glutInit(&argc, argv);

    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("TRT");

    glutDisplayFunc(display);

    glutMotionFunc(motion);

    glutMainLoop();

}

沒有留言:

張貼留言