2021年6月6日 星期日

張淳雅_Week04

 點圖標出座標

1. 打開之前的GLUT檔案
2. 加入mouse函式
#include <GL/glut.h>
#include <stdio.h>///因為
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glutSolidTeapot(0.3);
    glutSwapBuffers();
}

void mouse(int button, int state, int x, int y)
{          ///左、右、中建  下、上  座標X、Y
    printf("button:%d state:%d x:%d y:%d\n", button,state,x,y);
    ///印出值並觀察
}

int main(int argc, char ** argv)
{
    glutInit( &argc, argv );
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("08160173張淳雅O.O");

    glutDisplayFunc(display);
    glutMouseFunc(mouse);///註冊mouse函式

    glutMainLoop();
}


試著畫圖!!!

1. 加入motion函式,記錄滑鼠移動的座標
#include <GL/glut.h>
#include <stdio.h>///因為要printf()
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glutSolidTeapot(0.3);
    glutSwapBuffers();
}

void mouse(int button, int state, int x, int y)
{
    printf("button:%d state:%d x:%d y:%d\n", button,state,x,y);
}

void motion(int x, int y)///mouse motion 在拖動它
{
    printf("glVertex2f( %f, %f);\n", (x-150)/150.0, -(y-150)/150.0);
}                                    ///減一半再除一半  減一半再除一半,加負號

int main(int argc, char ** argv)
{
    glutInit( &argc, argv );
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("08160173張淳雅O.O");

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

    glutMainLoop();
}

 2. 畫出線
#include <GL/glut.h>
int N=0, vx[3000], vy[3000];
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glBegin(GL_LINE_LOOP);
    for (int i=0; i<N; i++)
    {
        glVertex2f((vx[i]-150)/150.0, -(vy[i]-150)/150.0);
    }              ///減一半再除一半  減一半再除一半,加負號
    glEnd();

    glutSwapBuffers();
}

void motion(int x, int y)
{
    vx[N]=x; vy[N]=y;///把vx,vy的值存起來
    N++;
    display();///邊動mouse motion, 邊畫display()
}

int main(int argc, char ** argv)
{
    glutInit( &argc, argv );
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("08160173張淳雅O.O");

    glutDisplayFunc(display);
    glutMotionFunc(motion);

    glutMainLoop();
}


沒有留言:

張貼留言

距地表面160 Week11

 #include "glm.h" GLMmodel* pmodel = NULL; void drawmodel(void) {     if (!pmodel) { pmodel = glmReadOBJ("data/porsche.obj...