2023年3月2日 星期四

Week03

Part 2

///week 0302 translate mouse 要加上 mouse 的移動功能

///1. File new project, glut 專案

///2. 加上 week 0301 translate 的程式

///3. 要使用 global 變數來讓坐標改變

#include <GL/glut.h> ///使用 GLUT外掛

float mouseX=0, mouseY=0;///step 03-01 使用 global 變數

void myTeapot(float x, float y)

{

    glPushMatrix();///備份矩陣 (備份舊的位置)

        glTranslatef(x, y, 0);


        glutSolidTeapot(0.3);

    glPopMatrix();///還原矩陣 (還原舊的位置)

}

void display()

{

    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

    myTeapot(   (mouseX-150)/150.0, -(mouseY-150)/150.0 );

    glutSwapBuffers();

}

void mouse( int button, int state, int x, int y )///step 0301 mouse(), button為左中右鍵, state為按下/放開, x、y為坐標

{

    mouseX=x; mouseY=y;

}

int main(int argc, char** argv)

{

    glutInit(&argc, argv);

    glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);

    glutCreateWindow("week03 移動");


    glutDisplayFunc(display);

    glutMouseFunc(mouse);///滑鼠事件


    glutMainLoop();

}

void mouse



Part 3


///week 0302 translate mouse 要加上 mouse 的移動功能

///1. File new project, glut 專案

///2. 加上 week 0301 translate 的程式

///3. 要使用 global 變數來讓坐標改變

#include <GL/glut.h>

#include <stdio.h> ///為了printf()

float mouseX=0, mouseY=0;///step 03-01 使用 global 變數

void myTeapot(float x, float y)

{

    glPushMatrix();///備份矩陣 (備份舊的位置)

        glTranslatef(x, y, 0);


        glutSolidTeapot(0.3);

    glPopMatrix();///還原矩陣 (還原舊的位置)

}

void display()

{

    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

    myTeapot(   (mouseX-150)/150.0, -(mouseY-150)/150.0 );

    glutSwapBuffers();

}

void mouse( int button, int state, int x, int y )///step 0301 mouse(), button為左中右鍵, state為按下/放開, x、y為坐標

{

    mouseX=x; mouseY=y;

    x = (x-150) / 150.0;

    x = (y-150) / 150.0;

    if(state==GLUT_DOWN) printf("   glVertex2f(%.2f, %.2f);\n", x, y);

}

int main(int argc, char** argv)

{

    glutInit(&argc, argv);

    glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);

    glutCreateWindow("week03");

    glutDisplayFunc(display);

    glutMouseFunc(mouse);///滑鼠事件


    glutMainLoop();

}

}



沒有留言:

張貼留言