2016年3月15日 星期二

Week04 柯建良

1. 作業互評上傳

















2. 主題: 移動、旋轉、縮放 
 jsyeh.org/3dcg10

旋轉

x軸


y軸


z軸



3. 教材 與 實作

glTranslatef(x,y,z);
glRotatef(角度, x,y,z);
glScalef(x,y,z);

#include <GL/glut.h>
float nowX=0, nowY=0;
void mouse(int button, int state, int x, int y)
{
    nowX =  (x-150)/150.0;
    nowY = -(y-150)/150.0;
}
void display()
{
    glClearColor( 1, 1, 0, 1);
    glClear(GL_COLOR_BUFFER_BIT);
    glPushMatrix();
        glTranslatef( nowX, nowY, 0);
        glColor3f( 1, 0, 0);
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();
}
int main(int argc, char**argv)
{
    glutInit( &argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Hello3D");

    glutDisplayFunc(display);
    glutMouseFunc(mouse);

    glutMainLoop();

}



4. Mouse進階

#include <GL/glut.h>
#include <stdio.h>
#include <math.h>
float nowX=0, nowY=0;
void mouse(int button, int state, int x, int y)
{
    nowX =  (x-150)/150.0;
    nowY = -(y-150)/150.0;
    printf("glTranslatef( %f, %f, 0);\n", nowX, nowY);
}
void display()
{
    glClearColor( 1, 1, 0, 1);
    glClear(GL_COLOR_BUFFER_BIT);
    glPushMatrix();
        glTranslatef( nowX, nowY, 0);
        glColor3f( 0, 0, 0);

        glBegin(GL_POLYGON);
            for(float angle=0; angle< 3.14159265358979*2; angle+=0.1)
            {
                glVertex2f( 0.2*cos(angle), 0.2*sin(angle));
            }
        glEnd();
    glPopMatrix();
    glutSwapBuffers();
}
int main(int argc, char**argv)
{
    glutInit( &argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Hello3D");

    glutDisplayFunc(display);
    glutMouseFunc(mouse);

    glutMainLoop();
}

沒有留言:

張貼留言