2023年3月1日 星期三

chiche_week03

week03

step01


開啟網站連結.   👉https://jsyeh.org/3dcg10/

下載三個檔案    👉(windows.zip , data.zip , glut32.dll)

解壓縮(務必記得是解壓縮至此!!!)
開啟檔案.   👉Transformation.exe

成果如圖
step02

下載freeglut-MinGW-3.0.0-1.mp.zip
解壓縮檔案到桌面(freeglut)

複製檔案libfreeglut更名成libglut32.a

開啟codeblocks > create new project

點選 GLUT project

next >

儲存到桌面新增資料夾week03 

開啟fleeglut 資料夾

finish~~

step03
新增程式碼

#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(); 
}

成果如圖 出現茶壺

step04
修改並新增程式碼

#include <GL/glut.h>
void display()
{
    glPushMatrix();
        glTranslatef(0.5 , 0 , 0);
        glutSolidTeapot(0.3);
    glPopMatrix();

    glutSwapBuffers();
}

int main(int argc, char *argv[])
{
    glutInit(&argc, argv); 
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
   
    glutCreateWindow("GLUT Shapes");
    glutDisplayFunc(display); 
    glutMainLoop(); 
}
成果如圖 茶壺向右移動了

step05
修改並新增程式碼

#include <GL/glut.h>
void display()
{
    glPushMatrix();
        glTranslatef(0.5 , 0 , 0);
        glutSolidTeapot(0.3);
    glPopMatrix();

    glutSwapBuffers();
}
#include <stdio.h>
void mouse (int botton , int state , int x , int y)
{
    printf ("%d %d %d %d\n",botton , state , x , y);
}

int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week03");

    glutDisplayFunc(display);
    glutMouseFunc(mouse);

    glutMainLoop();
}

成果如圖 點按滑鼠左右鍵會跑出相對應座標


step06
修改並新增程式碼

#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);
        glutSolidTeapot(0.3);
    glPopMatrix();

    glutSwapBuffers();
}
#include <stdio.h>
void mouse (int botton , 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");

    glutDisplayFunc(display);
    glutMouseFunc(mouse);

    glutMainLoop();
}

成果如圖 茶壺可以隨滑鼠移動


step08

開啟codeblocks > create new project
點選 GLUT project
儲存到桌面新增資料夾 week03_mouse

step09
修改並新增程式碼

#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);
        glutSolidTeapot(0.3);
    glPopMatrix();

    glutSwapBuffers();
}
#include <stdio.h>
void mouse (int botton , int state , int x , int y)
{

    float X = (x-150)/150.0;
    float Y = -(y-150)/150.0;
    if(state==GLUT_DOWN){
        printf ("   glVertex2f(%.3f, %.3f);\n", X, Y);
    }
}

int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week03");

    glutDisplayFunc(display);
    glutMouseFunc(mouse);

    glutMainLoop();
}


step10
修改並新增程式碼

#include <GL/glut.h>
float X=0,Y=0;
void display()
{
    glBegin(GL_POLYGON);
    glVertex2f(-0.300, 0.747);
    glVertex2f(-0.520, 0.747);
    glVertex2f(-0.640, 0.520);
    glVertex2f(-0.667, 0.447);
    glVertex2f(-0.727, 0.133);
    glVertex2f(-0.667, -0.033);
    glVertex2f(-0.540, -0.160);
    glVertex2f(-0.187, -0.247);
    glVertex2f(0.000, -0.307);
    glVertex2f(0.280, -0.300);
    glVertex2f(0.440, -0.187);
    glVertex2f(0.500, -0.013);
    glVertex2f(0.580, 0.240);
    glVertex2f(0.527, 0.373);
    glVertex2f(0.340, 0.547);
    glVertex2f(0.173, 0.620);
    glVertex2f(0.000, 0.727);
    glVertex2f(-0.147, 0.747);
    glVertex2f(-0.260, 0.753);
    glEnd();

    glutSwapBuffers();
}
#include <stdio.h>
void mouse (int botton , 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);
    }
}

int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week03");

    glutDisplayFunc(display);
    glutMouseFunc(mouse);

    glutMainLoop();
}
成果如圖

滑鼠點擊過後會生成座標

step10

上傳檔案git指令

1. git指令
2. cd desktop
3. git clone https://github.com/你的帳號/2023graphicsa
4. cd 2023graphicsa
5. start .
6. git add . 
7. git status

8. git config --global user.email "電子郵件"

9. git config --global user.name "帳號名chiche0306"

10. git commit -m "week"

11. git push






沒有留言:

張貼留言