2023年3月2日 星期四

week03 勞贖畫圖✍🐭

 WEEK03


Step01-1

3D圖學:網站下載 下載window.zip 和 data.zip






window.zip和data.zip解壓縮把data放進window裡面


打開Transformation.exe





出現一台跑車 可以用glTranlatef更改攝影機的XYZ軸

glRotatef可以更改角度,glScalef可以更改大小







Step02-1


開啟CODEBLOCK


開專案







打專案名稱 選擇檔案存檔位置



解壓縮freeglut

開啟freeglut>lib>複製libfreeglut>貼上名稱改成libglut32
codeblock選擇freeglut完成>他跑出來就會生成三個神祕圖形

之後把程式碼全部刪掉,改成以下程式碼
#include <GL/glut.h>
void display()
{

        glutSolidTeapot(0.3);
        glutSwapBuffers();
}
int main(int argc,char *argv[])
    {
        glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE| GLUT_DEPTH);
    glutCreateWindow("week03");
    glutDisplayFunc(display);
    glutMainLoop();
    }

就會出現神奇白色茶壺喔😉


Step02-2



#include <GL/glut.h>
void display()
{

        glutSolidTeapot(0.3);
        glutSwapBuffers();
}
int main(int argc,char *argv[])
    {
        glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE| GLUT_DEPTH);
    glutCreateWindow("GLUT Shapes");
    glutDisplayFunc(display);
    glutMainLoop();
    }



Step02-3


更改茶杯的位置


#include <GL/glut.h>
void display()
{
        glPushMatrix();///備份矩陣
            glTranslatef(0.5,0.5,0);///改變矩陣
        glutSolidTeapot(0.3);
        glPopMatrix();///還原矩陣
        glutSwapBuffers();
}
int main(int argc,char *argv[])
    {
        glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE| GLUT_DEPTH);
    glutCreateWindow("week03");
    glutDisplayFunc(display);
    glutMainLoop();
    }







寫出下面的程式碼 茶杯就會隨著滑鼠的點擊而移動了😆



#include <GL/glut.h>
float X=0,Y=0,Z=0;
void display()
{
        glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
        glPushMatrix();
            glTranslatef(X,Y,Z);
        glutSolidTeapot(0.3);
        glPopMatrix();
        glutSwapBuffers();
}
void mouse(int button,int state, int x, int y)


{
    X=(x-150)/150.0;
    Y=-(y-150)/150.0;
}
int main(int argc,char *argv[])
    {
        glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE| GLUT_DEPTH);
    glutCreateWindow("week03");
    glutMouseFunc(mouse);
    glutDisplayFunc(display);
    glutMainLoop();
    }





Step03-1



開新專案複製Step02-3的程式



Step03-2


寫出讓滑鼠點到哪就寫出那個地方的位置

#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);
        glPushMatrix();
            glTranslatef(X,Y,Z);
        glPopMatrix();
        glutSwapBuffers();
     glBegin(GL_POLYGON);
            glEnd();
}
void mouse(int button,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();
    }







Step03-2




上傳GitHub👍

沒有留言:

張貼留言