2023年3月2日 星期四

鴻潤車業誰規定的week03

 week03

step01-1下載課本範例
https://jsyeh.org/3dcg10/     下載 win32和data並且解壓縮

把data丟到window裡

再點Transformation.exe  跑出頁面 
可以調整角度 拉動綠色數字即可

step01-2  跟以往一樣先打開OpenGL

刪除main.cpp再複製上週十行程式(從github上面找)
#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("week02");
  glutDisplayFunc(display);
 glutMainLoop();
}

step02-1 想要貼出有顏色的程式碼 用gist.github,但我不想用沒覺得比較好看

step02-2
移動物體
#include <GL/glut.h>
void display()
{
    glPushMatrix();///備份矩陣
        glTranslated(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();
}
step03-1
開啟新的專案複製step02-2程式碼再加上(紅色)或改變(藍色)
#include <GL/glut.h>
float X=0,Y=0,Z=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT |GL_DEPTH_BUFFER_BIT );
    glPushMatrix();
        glTranslated(X,Y,Z);
        glutSolidTeapot(0.3);
    glPopMatrix();

        glutSwapBuffers();
}
void mouse(int buttom,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-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 );

    glBegin(GL_POLYGON);

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


上傳GITHUB😢





沒有留言:

張貼留言