2016年3月21日 星期一

課堂作業1





課堂作業1-2
繞一個大圈圈一直轉


課堂作業1-3
只有繞著一個點一直轉


課堂作業2

讓茶壺會轉
#include <GL/glut.h>
float rotX=0;
void display()
{
    glClearColor(1,1,1,1);
    glClear(GL_COLOR_BUFFER_BIT);
    glPushMatrix();
        glRotatef(rotX,  0,1,0);
        glColor3f(1,0,0);
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();
}
void motion(int x, int y)
{
    rotX=x;
    display();
}
int main(int argc, char**argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("hello3D");

    glutDisplayFunc(display);
    ///glutMouseFunc(mouse);
    glutMotionFunc(motion);

    glutMainLoop();
}



Q1:什麼是glPushMatrix();
A1:備份Matrix (Matrixxu裡有translate, rotate,scale的量值 )
Q2:什麼是glPopMatrix();
A2:還原Matrix (回到剛剛push時的樣子)
Q3:什麼是Buffers?Double?
A3:兩倍記憶體

課堂作業3

有X Y
改變位置
#include <GL/glut.h>
float rotX=0;
void display()
{
    glClearColor(1,1,1,1);
    glClear(GL_COLOR_BUFFER_BIT);
    glPushMatrix();
        glRotatef(rotX,  1,0,0);
        glRotatef(rotX,  0,1,0);
        glColor3f(1,0,0);
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();
}
void motion(int x, int y)
{
    rotX=x;
    display();
}
int main(int argc, char**argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutInitWindowSize(300,300);glutInitWindowPosition(600,0);
    glutCreateWindow("hello3D");
    glutDisplayFunc(display);
    glutMotionFunc(motion);

    glutMainLoop();
}



沒有留言:

張貼留言