2024年3月7日 星期四

week03 用滑鼠寫程式










註冊mouse函式 glutMouseFunc(mouse);,多加以下的程式

#include <stdio.h>

void mouse(int button, int state, int x, int y)

{

    printf("Hello Mouse!\n");

}

執行後點茶壺,小黑畫面會出現 printf 上所打的東西









把第五行printf 改成 printf("%d %d %d %d\n",button,state,x,y); 

執行後點滑鼠的左鍵、右鍵、中鍵、點茶壺的左上、右上、左下、右下,會出現以上數值。









if (state==GLUT_DOWN)  printf ("glVertex2f((%d-150)/150.0,-(%d-150)/150.0);\n",x,y);

printf 印出參數









下載data跟win32,解壓縮後打開window的資料夾,開啟Translate.exe

就會出現上圖的畫面







複製上一個的程式碼,然後增加以下幾行程式碼

float teapotX=0, teapotY=0;

    teapotX=(x-150)/150.0;

    teapotY=-(y-150)/150.0;

glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

glPushMatrix();

    glTranslatef(teapotX,teapotY,0);

glPushMatrix();

執行程式後的茶壺會跟著你滑鼠點的位置移動!


滑鼠幫助轉動(用右手開掌定則) :

對Y軸轉,比讚,完成 !

對X軸轉,把拇指向右 !

對-Y軸轉,比倒讚 !

對Z軸轉,拇指向著自己 !









複製上一個的程式碼,然後增加以下幾行程式碼

float angle=0;

void display()

{

    glRotatef(angle,0,0,1);

        ///glTranslatef(teapotX,teapotY,0);

}

void motion(int x, int y)

{

    angle=x;

    display();

}

glutMotionFunc(motion);  <註冊motion函式>

執行程式後的茶壺會轉動 !


沒有留言:

張貼留言