2020年3月18日 星期三

Week03

(0) Zuvio複習上週教的內容(點、線、面、色彩)

到此網站:www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10
下載:data.zip, windows.zip, glut32.dll

課堂作業3: CodeBlocks 新增 GLUT專案, 安裝好 freeglut, 設定好 lib\libglut32.a , 剪貼上週 blog裡的程式碼, 變出茶壼

#include <GL/glut.h>

void display()
{
 glutSolidTeapot( 0.3 );
 glutSwapBuffers();

}

int main(int argc, char *argv[])///也可以打**argv
{
 glutInit(&argc, argv);
 glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH);
 glutCreateWindow("Week02 ");

 glutDisplayFunc(display);
 glutMainLoop();

}




(1) 主題: Mouse函式

#include <GL/glut.h>///If apple GLUT/glut.h
#include <stdio.h>

void display()
{
 glutSolidTeapot( 0.3 );
 glutSwapBuffers();

}
void mouse(int button, int state, int x, int y)///TODO:mouse的函式
{
    printf("%d %d %d %d\n", button, state, x, y);
}

int main(int argc, char *argv[])///也可以打**argv
{
 glutInit(&argc, argv);
 glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH);
 glutCreateWindow("Week03");

 glutDisplayFunc(display);
glutMouseFunc(mouse);
 glutMainLoop();

}



(2) 主題: Motion函式

#include <GL/glut.h>///If apple GLUT/glut.h


void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glBegin(GL_POLYGON);
        glVertex2f((127-150)/150.0, -(132-150)/150.0);
    glEnd();
    glutSwapBuffers();

}
void mouse(int button, int state, int x, int y)///TODO:mouse的函式
{
    
}

int main(int argc, char *argv[])///也可以打**argv
{
 glutInit(&argc, argv);
 glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH);
 glutCreateWindow("Week03");

 glutDisplayFunc(display);
 glutMouseFunc(mouse);
 glutMainLoop();

}


(3)主題: 移動 glTranslatef(x,y,z)

#include <GL/glut.h>///If apple GLUT/glut.h
#include <stdio.h>
float teapotX=0, teapotY=0;

void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
    glTranslatef(teapotX, teapotY, 0);
    glutSolidTeapot( 0.3 );
    glPopMatrix();
    glutSwapBuffers();

}
void mouse(int button, int state, int x, int y)///TODO:mouse的函式
{
    teapotX= (x-150)/150.0;
    teapotY= -(y-150)/150.0;
}

int main(int argc, char *argv[])///也可以打**argv
{
 glutInit(&argc, argv);
 glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH);
 glutCreateWindow("Week03");

 glutDisplayFunc(display);
 glutMouseFunc(mouse);
 glutMainLoop();
}



沒有留言:

張貼留言