| Week 10 |
§T-R-T 旋轉 (改變旋轉軸) §
----------------------------------------------------------------------------------------------------------------
一樣到
下載[data]、[win32]、gult32.dll
●02
一樣先把windows.zip解壓縮到windows資料夾裡面
●03
一樣先把data資料夾拉到windows資料夾裡面
並複製glut32.dll到windows資料夾裡面
●04
打開Transformation.exe
●05
Q: 自轉 VS 公轉的差別?
A: Translatef 跟 Rotatef 的順序差別
(因為程式是一層一層由裡面往外面看)
R→T
glRotatef(x,y,z)
glTranslatef(x,y,z)
..
..
公轉(繞著東西轉)
T→R
glTranslatef(x,y,z)
glRotatef(x,y,z)
..
..
--------------------------------------------------------------------------------------------------------------
🔺GLUT前置作業
。打開 codeblocks
Files> New>project>GLUT
。到google搜尋 freegult windows 下載 Download freeglut 3.0.0 for MinGW
。解壓縮 freeglut
。打開 lib 找到 freeglut.a 並複製
。把 freeglut.a 改為 libglut32.a
。複製 freeglut連接位置
。找到 程式碼 main.c 並打開 執行完成!
●06
開啟GLUT
打程式碼
◎程式碼
#include <GL/glut.h>
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(0,0.5,0);
glutWireTeapot(0.3);
glPopMatrix();
glPushMatrix();
glTranslatef(0.51,0.63,0); ///(3)希望把 會動的手 移到茶壺上
glRotatef(angle,0,0,1);///(1) 這是手的旋轉
glTranslatef(0.6,0,0); ///(2) 這是旋轉中心 先移到畫面的中心
glRotatef(-90,0,1,0);
glutWireCone(0.1,0.6,10,10);
glPopMatrix();
glutSwapBuffers();
}
void motion(int x, int y)
{
angle = x;
display();
}
int main(int argc,char ** argv)
{
glutInit( &argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("WEEK10");
glutDisplayFunc(display);
glutMotionFunc(motion);
glutMainLoop();
}
沒有留言:
張貼留言