2017年3月20日 星期一

Week04 陳18

<一>

先到http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/網站下載

          (1)data.zip到桌面\window\data\模型.mtl
          (2)window.zip到桌面\window\Transformation.exe
          (3)glut32.dll到桌面\window\glut32.dll


        可以跑出此畫面就代表完成!!!!



<二>

(1)開啟main.cpp程式
(2)將程式碼做點改變
#include <GL/glut.h>
void display()
{

    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glTranslatef(0.5, 0, 0);
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();

}
int main(int argc,char **argv )
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH);
    glutCreateWindow("04160134 Translate Rotate Scale");
    glutDisplayFunc(display);
    glutMainLoop();
}


<三>讓滑鼠可以移動茶壺

#include <GL/glut.h>
float mouseX=0,mouseY=0;
void display()
{

    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glTranslatef(mouseX, mouseY, 0);
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();

}
void motion(int x,int y)
{
    mouseX=(x-150)/150.0;
    mouseY=-(y-150)/150.0;
    glutPostRedisplay();
}
int main(int argc,char **argv )
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH);
    glutCreateWindow("04160134 Translate Rotate Scale");
    glutDisplayFunc(display);
    glutMotionFunc(motion);
    glutMainLoop();
}

<四>開口笑

#include<math.h>
#include<stdio.h>
#include <GL/glut.h>
void mouse(int button, int state, int x, int y)
{
    if(state==GLUT_DOWN) printf("glVertex2f( %.2f, %.2f);\n", (x-250)/250.0, -(y-250)/250.0 );
}
float mouth=0;
void motion(int x, int y)
{

    glColor3f( 1, x/500.0 , y/500.0 );
    glutPostRedisplay();
    mouth = x/300.0;

}
void display()

{
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    glBegin(GL_TRIANGLE_FAN);
        glVertex2f(0,0);
        for(float angle=0+mouth; angle< 3.1415926 *2 -mouth ; angle+= 3.1415926/100){
            glVertex2f(  cos(angle),  sin(angle) );
        }
       glEnd();

       glutSwapBuffers();

}
int main(int argc, char *argv[])
{
    glutInit( &argc, argv);
    glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH);
    glutInitWindowSize(500,500);
    glutCreateWindow("04160134 Number 1");

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

    glutMainLoop();


}
<五>會轉的茶壺

#include <GL/glut.h>
float mouseX=0,mouseY=0;
void display()
{

    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glScalef(mouseX,mouseY,0);

        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();

}
void motion(int x,int y)
{
    mouseX=(x-150)/150.0;
    mouseY=-(y-150)/150.0;
    glutPostRedisplay();
}
int main(int argc,char **argv )
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH);
    glutCreateWindow("04160134 Translate Rotate Scale");

    glutDisplayFunc(display);
    glutMotionFunc(motion);
    glutMainLoop();
}


<六>完成Zuvio的回答問題





沒有留言:

張貼留言