2023年3月1日 星期三

Lisa的電腦圖學 - week03 移動

➤ Week03_下載上課資料

    1. 從 https://jsyeh.org/3dcg10/ 下載 data .zip / win32 / glut32.dll




    2. 解壓縮

        windowe.zip 



➤ Week03-1_translate
    1. 複製week02-1_GLUT_first 的程式碼,並新增以下程式碼
#include <GL/glut.h>
void display()
{
    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("week03");
    glutDisplayFunc(display);
    glutMainLoop();
}


➤ Week03-1_用滑鼠控制茶壺
#include <GL/glut.h>
void display()
{
    glPushMatrix();
        glTranslatef(0.5, 0, 0);
        glutSolidTeapot( 0.3 );
    glPopMatrix();

    glutSwapBuffers();
}

#include <stdio.h>
void mouse (int button, int state, int x, int y)
{
    printf("%d %d %d %d\n", button, state, x, y);
}

int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("week03");
    glutDisplayFunc(display);
    glutMouseFunc(mouse);
    glutMainLoop();
}



➤ Week03-1_按滑鼠左鍵移動茶壺
#include <GL/glut.h>
float X=0, Y=0;
void display()
{
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
    glPushMatrix();
        glTranslatef( X, Y, 0);
        glutSolidTeapot( 0.3 );
    glPopMatrix();

    glutSwapBuffers();
}

void mouse (int button, int state, int x, int y)
{
    X =  ( x-150 ) / 150.0 ;
    Y = -( y-150 ) / 150.0 ;
}

int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("week03");
    glutDisplayFunc(display);
    glutMouseFunc(mouse);
    glutMainLoop();














沒有留言:

張貼留言