data.zip→桌面\window\data\模型.obj
windows.zip→桌面\windiw\Transformation.exe
glut32.dll→桌面\window\glut32.dll
●將windows.zip先解壓,再把glut32.dll和data.zip解壓一起放到windows的資料夾
2.開啟GLUT專案,輸入上周的程式碼,比上周多一行新增:glTranlatef(0,0,0);,讓茶壺可以改變座標位置
#include <GL/glut.h>
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(0.3,0.3,0);///追加的程式碼
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("04162664 Translate Rotate Scale");
glutDisplayFunc(display);
glutMainLoop();
}
3.新增motion程式碼能夠使用滑鼠移動茶壺的位置
#include <GL/glut.h>
float mouseX=0, mouseY=0;///x、y座標數值設定
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(mouseX,mouseY,0);
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
void motion(int x, int y)
{
mouseX = (x-150)/150.0;///滑鼠座標修正
mouseY = -(y-150)/150.0;
glutPostRedisplay();
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("04162664 Translate Rotate Scale");
glutMotionFunc(motion);
glutDisplayFunc(display);
glutMainLoop();
}
4.修改程式碼,讓茶壺可以自由縮放旋轉
#include <GL/glut.h>
float mouseX=0, mouseY=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();///backup the matrix
glScalef(mouseX,mouseY,0);///Today's Most Important line
glutSolidTeapot(0.3);
glPopMatrix();///restore the matrix
glutSwapBuffers();
}
void motion(int x, int y)
{
mouseX = (x-150)/150.0;/// x/300.0
mouseY = -(y-150)/150.0;/// y/300.0
glutPostRedisplay();///貼個便利貼 Post便利貼,告訴GLUT
///要重畫畫面 Re-display
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("04162664 Translate Rotate Scale");
glutDisplayFunc(display);
glutMotionFunc(motion);
glutMainLoop();
}




沒有留言:
張貼留言