2016年6月7日 星期二

Week_16

投影矩陣

了解Projection Matrix

C++
#include <GL/glut.h>
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();
}
void resize( int w, int h )
{
    glViewport( 0, 0, (GLsizei) w, (GLsizei) h );
    glMatrixMode( GL_PROJECTION );
    glLoadIdentity();
    gluPerspective( 65.0, (GLdouble) w / h,1.0, 100.0 );
    glMatrixMode( GL_MODELVIEW );
    glLoadIdentity();
    gluLookAt( 0.0, 0.0, 5.0,
                0.0, 0.0, 0.0,
                0.0, 1.0, 0.0 );
}
int main(int argc,  char**argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("camera");
    glutDisplayFunc(display);
    glutReshapeFunc(resize);

    glutMainLoop();
}



Camera 運鏡
C++
加上
void motion(int x,int y)
{
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    gluLookAt(x/100.0,y/100.0,5.0,
              0.0,0.0,0.0,
              0.0,1.0,0.0);
    glutPostRedisplay();

}


gluLookAt( ) {camera, object , Up)
加上運鏡、

C++

gluLookAt(rot[7]/100.0,rot[8]/100.0,5.0,
              0.0,0.0,0.0,

              0.0,1.0,0.0);

if(key=='7') rotNow=7;
if(key=='8') rotNow=8;
if(key=='9') rotNow=9;

int main(int argc,char**argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);
    glutCreateWindow("3D Interpolate");
    glutDisplayFunc(display);
    glutMotionFunc(motion);
    glutKeyboardFunc(keyboard);
    glutMouseFunc(mouse);
    glutReshapeFunc(resize);
    glutMainLoop();
}

沒有留言:

張貼留言