2023年3月2日 星期四

91 week03

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



2.windows.zip 和 data.zip 解壓縮 下載 Transformation.exe

執行:

綠色xyz可以移動



week03-1:開 freeglut 壓縮檔再拉到桌面


\freeglut\lib裡libfreeglut.a複製成libglut32.a
開code blocks 選glut專案 名稱: week01-2_GLUT 把目錄改設成桌面的freeglut

最後執行


修改main.cpp
複製貼上:
#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();
}

第二步:
使用github gist貼上week02-1的程式碼,副檔名.cpp
修改程式:
增加:
#include <GL/glut.h>
void display()
{
    glPushMatrix();//備份矩陣
    glTranslatef(0.5,0.5,0);//會改變矩陣
    glutSolidTeapot( 0.3 );
    glPopMatrix();//還原矩陣
    glutSwapBuffers();
}

week03-2:
開新的GLUT project
複製week03-1程式碼再貼上程式碼
再修改程式碼:
#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();
}
 
week03-3_homework:
修改程式:
#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);
    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;
    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();
}
註記:
glBegin(GL.POLYGON);
glVertex2f(中間座標......);
glEnd();




                               

沒有留言:

張貼留言