2016年3月16日 星期三

Week04 張瑋展

1. 作業互評上傳




2.課堂作業

網址:jsyeh/3dcg10/

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


3.  茶壺會一直移動
程式碼:
#include <GL/glut.h>

void display()
{
    glClearColor(1,1,0,1);
    glClear(GL_COLOR_BUFFER_BIT);

    glTranslatef(0, -0.1, 0);
    glColor3f(1,0,0);
    glutSolidTeapot(0.3);


    glutSwapBuffers();
}
int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
    glutCreateWindow("Hello");

    glutDisplayFunc(display);


    glutMainLoop();
}

點到哪跑到哪
程式碼

#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("Hello 3D");
    glutDisplayFunc(display);
    glutMouseFunc(mouse);
    glutMainLoop();

}

4.畫出圓圈 隨滑鼠移動並顯示座標

程式碼
#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(1,0,0);
    ///glutSolidTeapot(0.3);
    glBegin(GL_POLYGON);
        for(float angle=0; angle<3.14159235358979*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("Hello 3D");
    glutDisplayFunc(display);
    glutMouseFunc(mouse);
    glutMainLoop();
}




沒有留言:

張貼留言