2023年3月2日 星期四

Doing nothing losing life week03

 Week03

Step01


1.去 https://jsyeh.org/3dcg10/ 下載windows.zip 和 data.zip

2.解壓縮 windows.zip 和 data.zip

3.將解壓縮後的data資料夾都進解壓縮後的windows資料夾

4.執行 Transformation.exe



Step02

1.開啟CodeBlocks 新增GLUT專案,檔案名稱week03,存在桌面

2.安裝freeglut,複製libglutfree 並重新命名為 libglut32

3.複製並貼上上週的十行程式碼



#將程式碼放置GitHub gist 用HTML檢視Blog並更新

4新程式碼
    glPushMatrix();               備份矩陣
    glTranslatef( 0.5, 0.5, 0); 向右0.5 向上0.5
    glutSolidTeapot( 0.3 );
    glPushMatrix();               還原矩陣




Week03-2

將原本程式碼改為下列程式碼,讓茶壺能夠按照滑鼠點擊方向移動



#include <GL/glut.h>
float X=0,Y=0,Z=0;   //使用global變數
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);  //清背景
    glPushMatrix();  //備份矩陣
    glTranslatef( X, Y, Z); //照著X Y Z來移動
    glutSolidTeapot( 0.3 );
    glPushMatrix(); //還原矩陣

    glutSwapBuffers();
}
void mouse(int buttom,int state,int x,int y)
{
    X=(x-150)/150.0;   減一半,除一半
    Y=-(y-150)/150.0;  減一半,除一半,Y變負的
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week03");

    glutMouseFunc(mouse);
    glutDisplayFunc(display);

    glutMainLoop();
}


Week03-3

將程式碼改為下列程式碼
#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);
    glBegin(GL_POLYGON);
    glVertex2f(-0.44,0.49);
    glVertex2f(-0.27,0.64);
    glVertex2f(0.09,0.71);
    glVertex2f(0.44,0.61);
    glVertex2f(0.51,0.34);              //用滑鼠找出的點
    glVertex2f(0.50,0.01);
    glVertex2f(0.26,-0.30);
    glVertex2f(-0.09,-0.40);
    glVertex2f(-0.47,-0.26);
    glVertex2f(-0.60,0.00);
    glVertex2f(-0.70,0.49);
    glVertex2f(-0.61,0.66);

    glEnd();
    glPushMatrix();

    glutSwapBuffers();
}
void mouse(int buttom,int state,int x,int y)
{
    X=(x-150)/150.0;
    Y=-(y-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("week03");

    glutMouseFunc(mouse);
    glutDisplayFunc(display);

    glutMainLoop();
}
  


沒有留言:

張貼留言