2015年5月28日 星期四

02160571_黃冠瑛_week14

電腦圖學week14
(1)期末作品
(2)會跳舞的機器人
(3)T-R-T對關節
(4)小考TRT觀念
(5)作業問題

TODO是windows.7z裡tranformation的
Al Capone

  移動旋轉

旋轉移動


TODO:
version1:打光茶壺
version2:打光茶壺右移
version3:整盤旋轉
version4:滑鼠控制
version5:掛到該放的位置
#include <GL/glut.h>
float angle=0, oldX=0, oldY=0;
void drawArm()
{
    glPushMatrix();
        glScalef(0.5, 0.25, 0.25);
        glutSolidCube(1);
    glPopMatrix();
}
void drawBody()
{
    glPushMatrix();
        glTranslatef(0, -0.5, 0);
        glRotatef(-90, 1, 0, 0);
        glutSolidCone(0.3, 0.8, 30, 30);
    glPopMatrix();

}
void display()
{
    {///light
        GLfloat pos[] = {0, 0, -1, 0};
        glLightfv(GL_LIGHT0,GL_POSITION, pos);
        glEnable(GL_LIGHT0);
        glEnable(GL_LIGHTING);
    }
  glEnable(GL_DEPTH_TEST);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  glPushMatrix();
        glTranslatef(0.15, 0.1, 0);       glTranslatef(0.45, 0.1, 0);
        glRotatef(angle, 0 , 0, 1);        glRotatef(angle, 0 , 0, 1);
        glTranslatef(0.25, 0, 0);///version2:move to right
        drawArm();///glutSolidTeapot(0.3);
        glPushMatrix();
            glTranslatef(0.25, 0, 0);
            glRotatef(angle, 0, 0, 1);
            glTranslatef(0.25, 0, 0);
            drawArm();        glutSolidTeapot(0.3);
        glPopMatrix();
    glPopMatrix();

   glPushMatrix();
        glTranslatef(-0.15, 0.1, 0);
        glRotatef(angle, 0 , 0, 1);
        glTranslatef(-0.25, 0, 0);
        drawArm();
        glPushMatrix();
            glTranslatef(-0.25, 0, 0);
            glRotatef(angle, 0, 0, 1);
            glTranslatef(-0.25, 0, 0);
            drawArm();        glutSolidTeapot(0.3);
       glPopMatrix();
    glPopMatrix();

    drawBody();   glutSolidTeapot(0.3);

    glFlush();
}
void timer (int t)
{
    glutTimerFunc(20, timer, 0);
    ///angle++;
    glutPostRedisplay();
}

void mouse (int button, int state, int x, int y)
{
   if(state==GLUT_DOWN)
   {
       oldX=x;
       oldY=y;
   }
}

void motion (int x,int y)
{
     angle+= (x -oldX);
    oldX = x;
}

int main (int argc, char ** argv)
{
    glutInit(&argc, argv);
    glutCreateWindow("TRT 3D");
    glutDisplayFunc(display);
    glutTimerFunc(20, timer , 0);
    glutMouseFunc(mouse);
    glutMotionFunc(motion);

    glutMainLoop();
}

1

2

3

4
5
6





沒有留言:

張貼留言