2020年3月18日 星期三

week3

同上週下載www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10 裡面的 data, windows, glut32.dll 及解壓縮


打出茶壺的程式碼 顯示按下滑鼠哪個鍵 按下還是放開 點擊的座標
#include <GL/glut.h>
#include <stdio.h>
void display()
{
    glutSolidTeapot(0.3);
    glutSwapBuffers();
}
void mouse(int button,int state,int x,int y)
{
    printf("%d %d %d %d\n",button,state,x,y);
}
int main(int argc,char**argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Week03");
    glutDisplayFunc(display);
    glutMouseFunc(mouse);
    glutMainLoop();
}

滑鼠點擊隨便一處 茶壺就會顯示在你要的地方
#include <GL/glut.h>
#include <stdio.h>
float teatopX=0,teatopY=0;
void display()
{///TODO2:glClear()
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
    ///glTranslatef( x , y , z ); 
    glTranslatef(teatopX,teatopY,0);
    glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();
}
void mouse(int button,int state,int x,int y)
{
    teatopX=(x-150)/150.0;
    teatopY=-(y-150)/150.0;
}
int main(int argc,char**argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Week03");
    glutDisplayFunc(display);
    glutMouseFunc(mouse);
    glutMainLoop();
}

用小畫家找座標 一個一個把頂點連起來 形成一顆愛心 由於點還不夠多 愛心還不夠圓滑
#include <GL/glut.h>
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glBegin(GL_POLYGON);
        glVertex2f((149-150)/150.0,-(108-150)/150.0);
        glVertex2f((137-150)/150.0,-(87-150)/150.0);
        glVertex2f((115-150)/150.0,-(80-150)/150.0);
        glVertex2f((86-150)/150.0,-(92-150)/150.0);
        glVertex2f((86-150)/150.0,-(126-150)/150.0);
        glVertex2f((100-150)/150.0,-(160-150)/150.0);
        glVertex2f((148-150)/150.0,-(192-150)/150.0);
        glVertex2f((200-150)/150.0,-(160-150)/150.0);
        glVertex2f((217-150)/150.0,-(126-150)/150.0);
        glVertex2f((220-150)/150.0,-(92-150)/150.0);
        glVertex2f((178-150)/150.0,-(80-150)/150.0);
        glVertex2f((164-150)/150.0,-(87-150)/150.0);
    glutSwapBuffers();
}
void mouse(int button,int state,int x,int y)
{

}
int main(int argc,char**argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Week03");
    glutDisplayFunc(display);
    glutMouseFunc(mouse);
    glutMainLoop();
}




沒有留言:

張貼留言