2017年3月21日 星期二

Week05上課筆記

先去jsyeh.org/3dcg10 下載windows date glut32
主題一:移動Translate
主題二:旋轉Rotate
主題三:縮放Scale
#include <GL/glut.h>
void display()
{
    glPushMatrix();
        glTranslatef(0,1,0);
        glutSolidTeapot(0.3);
    glPopMatrix();

    glutSwapBuffers();
}
int main(int argc,char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("04160594 translate rotate scale");
    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();///備份起來
        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("04160594 translate rotate scale");
    glutDisplayFunc(display);
    ///glutMouseFunc(mouse);
    glutMotionFunc(motion);
    glutMainLoop();
}
這是讓茶壺隨著滑鼠移動

 
將glTranslatef(mouseX,mouseY,0);
更改成glScalef(mouseX,mouseY,0);
就可以用滑鼠自由縮放大小

讓茶壺可以旋轉
#include <GL/glut.h>
float mouseX=0,mouseY=0,rotX=0;
void display()
{   glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    glPushMatrix();///備份起來
        //glTranslatef(mouseX,mouseY,0);
       // glScalef(mouseX,mouseY,0);
       glRotatef(rotX,0,0,1);
        glutSolidTeapot(0.3);
    glPopMatrix();///還原

    glutSwapBuffers();
}
void motion(int x,int y)
{
    mouseX=(x-150)/150.0;
    mouseY=-(y-150)/150.0;
    rotX=x;
    glutPostRedisplay();
}
int main(int argc,char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("04160594 translate rotate scale");
    glutDisplayFunc(display);
    ///glutMouseFunc(mouse);
    glutMotionFunc(motion);
    glutMainLoop();
}









沒有留言:

張貼留言