2021年3月15日 星期一

是你是你反詐騙 Week04

✨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)
{
    printf("button:%d state:%d x:%d y:%d\n",button,state,x,y);///button0:右鍵 1:滾輪 2:左鍵
}///state0:按下 1:放開
int main(int argc,char **argv) 
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("mouse week04");
    glutDisplayFunc(display);
    glutMouseFunc(mouse);///滑鼠迴圈
    glutMainLoop();
}

 *新增的程式

_____________________________________________________________________

✨紀錄座標

⬆紀錄滑鼠位置


⬆滑鼠座標畫出來的多邊形

#include <GL/glut.h> ///使用GLUT外掛
#include <stdio.h>
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glBegin(GL_POLYGON);///多邊形
     glVertex3f((117-150)/150.0, -(128-150)/150.0,0);
     glVertex3f((147-150)/150.0, -(124-150)/150.0,0);
     glVertex3f((141-150)/150.0, -(116-150)/150.0,0);
     glVertex3f((158-150)/150.0, -(112-150)/150.0,0);
     glVertex3f((155-150)/150.0, -(121-150)/150.0,0);
     glVertex3f((183-150)/150.0, -(129-150)/150.0,0);
     glVertex3f((191-150)/150.0, -(150-150)/150.0,0);
     glVertex3f((199-150)/150.0, -(147-150)/150.0,0);
     ///剛剛印出來的座標
    glEnd();
    glutSwapBuffers();
}
void mouse(int button,int state,int x,int y)
{
    if(state==GLUT_DOWN)
    {
        printf("glVertex3f((%d-150)/150.0, -(%d-150)/150.0,0);\n",x,y);///印出滑鼠按下的位置
    }
}
int main(int argc,char **argv) 
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("mouse week04");
    glutDisplayFunc(display);
    glutMouseFunc(mouse);
    glutMainLoop();
}
________________________________________________________________

✨移動

#include <GL/glut.h>
#include <stdio.h>
float teapotX=0,teapotY=0;///茶壺的座標
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();///矩陣備份
        glTranslatef(teapotX, teapotY, 0);///照著座標移動
        glutSolidTeapot(0.3);
    glPopMatrix();///矩陣還原
    glEnd();
    glutSwapBuffers();
}

void motion(int x,int y)///mouse motion的函式
{
    teapotX =(x-150)/150.0;///換算座標
    teapotY =-(y-150)/150.0;
}
int main(int argc,char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("mouse week04");
    glutDisplayFunc(display);
    glutMotionFunc(motion);///移動時的函式
    glutMainLoop();
}
_________________________________________________________________

✨移動 旋轉 縮放


glTranslatef(x,y,z);///移動
glRotatef(角度,x,y,z);///有四個向量!旋轉 (右手定律
glScalef(x,y,z);///縮放



⬆Y軸為中心旋轉


沒有留言:

張貼留言

Week18期末作業(橘貓的跳舞熊熊)

 期末作業(橘貓的跳舞熊熊) 影片: https://youtu.be/R89tptMaQZw 程式碼: #include <opencv/highgui.h> #include <opencv/cv.h> #include <GL/glut.h...