2023年3月1日 星期三

翁逸豪 Week03

 Week03-1

https://jsyeh.org/3dcg10/

下載

-data data.zip

-win32 windows.zip

-glut32.dll

將data解壓縮放入win32的解壓縮檔,Transformation.exe物體移動範本就可以使用了


glPushMatrix();///備分矩陣

        glTranslatef(0.5, 0, 0);///往右0.5格

        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);///印出 按鍵、點擊狀態、x位置、y位置
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("GLUT Shapes");
glutDisplayFunc(display);
glutMouseFunc(mouse);///請mouse函式執行
glutMainLoop();
}
顯示點擊按鍵與位置。
按鍵與位置的顯示方式


#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);///移動到座標(X,Y)
        glutSolidTeapot(0.3);
    glPopMatrix();///還原矩陣

    glutSwapBuffers();
}
void mouse(int button, int state, int x, int y)
{
    X=(x-150)/150.0;///X的實際位置
    Y=-(y-150)/150.0;///Y的實際位置
}
茶壺移動與按鍵綁定。
茶壺移動到滑鼠點擊位置

利用https://gist.github.com發布私人的程式。複製該程式的網址再使用部落格的HTML檢視編輯,可把在GitHub發布的程式以GitHub的顯示方式使其出現在部落格。
Week03-2

#include <GL/glut.h>
#include <stdio.h>
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    
    glutSwapBuffers();
}
void mouse(int button, int state, int x, int y)
{
    float X=(x-250)/250.0;
    float Y=(y-250)/250.0;
    if(state==GLUT_DOWN)
    {
        printf("    glVertex2f(%.3f, %.3f);\n",X,Y);
    }
}
顯示滑鼠點擊位置,再將點擊位置複製貼到display函式
隨便畫的圖

沒有留言:

張貼留言