Week03
Step01
1.去 https://jsyeh.org/3dcg10/ 下載windows.zip 和 data.zip
2.解壓縮 windows.zip 和 data.zip
3.將解壓縮後的data資料夾都進解壓縮後的windows資料夾
4.執行 Transformation.exe
Step02
1.開啟CodeBlocks 新增GLUT專案,檔案名稱week03,存在桌面
2.安裝freeglut,複製libglutfree 並重新命名為 libglut32
3.複製並貼上上週的十行程式碼
#將程式碼放置GitHub gist 用HTML檢視Blog並更新
4新程式碼
glPushMatrix(); 備份矩陣
glTranslatef( 0.5, 0.5, 0); 向右0.5 向上0.5
glutSolidTeapot( 0.3 );
glPushMatrix(); 還原矩陣
#include <GL/glut.h>
float X=0,Y=0,Z=0; //使用global變數
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //清背景
glPushMatrix(); //備份矩陣
glTranslatef( X, Y, Z); //照著X Y Z來移動
glutSolidTeapot( 0.3 );
glPushMatrix(); //還原矩陣
glutSwapBuffers();
}
void mouse(int buttom,int state,int x,int y)
{
X=(x-150)/150.0; 減一半,除一半
Y=-(y-150)/150.0; 減一半,除一半,Y變負的
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week03");
glutMouseFunc(mouse);
glutDisplayFunc(display);
glutMainLoop();
}
將程式碼改為下列程式碼
#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);
glVertex2f(-0.44,0.49);
glVertex2f(-0.27,0.64);
glVertex2f(0.09,0.71);
glVertex2f(0.44,0.61);
glVertex2f(0.51,0.34); //用滑鼠找出的點
glVertex2f(0.50,0.01);
glVertex2f(0.26,-0.30);
glVertex2f(-0.09,-0.40);
glVertex2f(-0.47,-0.26);
glVertex2f(-0.60,0.00);
glVertex2f(-0.70,0.49);
glVertex2f(-0.61,0.66);
glEnd();
glPushMatrix();
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();
}
沒有留言:
張貼留言