2023年3月2日 星期四

晚安

 範例 http://jsyeh.org/3dcg10

1. 下載網頁中的data, win32








2. 將windows解壓縮, data.zip/data丟進解壓縮後的windows資料夾










 3. 執行Transformation.exe
    對視窗右上角點擊右鍵:換模型
    拖曳下方綠色數值:旋轉、移動、大小



移動 Translattef()
使用上週寫出茶壺的程式碼
1.在座標上畫出圖形
```
#include <GL/glut.h>

void display()
{
    glClear(GL_COLOR_BUFFER_BIT |GL_DEPTH_BUFFER_BIT);

    glPushMatrix();///備份矩陣
    ///移動會累積, 因為它會修改矩陣
        glTranslatef(0.2, 0.6, 0.8);
        glColor3f(1, 1, 0);
        glutSolidTeapot(0.3);
    glPopMatrix();///還原矩陣
    /*備份與還原間要縮排*/
    glutSwapBuffers();
}

int main(int argc, char** argv)
{
    glutInit( &argc, argv);
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
    glutCreateWindow("week_02");

    glutDisplayFunc(display);
    glutMainLoop();
}
```















滑鼠事件 glutMouseFunc()
新增滑鼠事件,並利用printf()印出程式碼

```
#include <GL/glut.h>
#include <stdio.h>
float X=0,Y=0,Z=0;
void display()
{

    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glutSwapBuffers();
}
void mouse(int button, int state, int x, int y)
{
    X= (x-150)/150.0;
    Y=-(x-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_RGB | GLUT_DOUBLE | GLUT_DEPTH );
    glutCreateWindow("week_03");

    glutMouseFunc(mouse);
    glutDisplayFunc(display);
    glutMainLoop();
}
```
















沒有留言:

張貼留言