
下載DATA資料夾的時候不能有兩個data在data 會跑不出來
1-1
swap translate 按下去A&B會切換
移動和旋轉的方式會不一樣從glBegin往上看
1-3
A: translate
rotate
scale
先移動軸在隨軸旋轉
是芭雷舞者的旋轉
軸在自己身上
原地旋轉



1-2
B: rotate
translate
scale
繞軸旋轉 會是跑大圓圈圈
整鍋菜旋轉
軸在整個空間




如果打程式碼的地方不見了 點view manager
可以用滑鼠旋轉茶杯
程式碼
#include <GL/glut.h>
float rotX=0, rotY=0;
void display()
{
glClearColor(1,1,1,1);///背景的顏色
glClear(GL_COLOR_BUFFER_BIT);///把背景的顏色丟進來
glPushMatrix();///輸入矩陣 備份Matrix (Matrix裡有translate, rotate,scale的量值)
glRotatef(rotX, 0,1,0);///x的移動量,讓他對y軸轉
glRotatef(rotY, 1,0,0);///x的移動量,讓他對x軸轉
glColor3f(1,0,0);///茶杯的顏色
glutSolidTeapot(0.3);///茶杯大小
glPopMatrix();///輸出矩陣 還原Matrix(回到剛剛push時的樣子)
///從pop往上看到push
glutSwapBuffers();///兩個交換跑出來 一好了跑出來 二還沒好就在裡面做 不秀出過程//像拉拉背板拉開 舞者準備好
}
void motion(int x,int y)
{
rotX=x; rotY=y;///拿來旋轉 同時拿來用
display();///要有框框()表示帶入上面的display函式
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);///DOUBLE Buffers 兩倍記憶體
glutInitWindowSize(300,300);///黑窗大小
glutInitWindowPosition(600,0);///顯示小黑窗的起始點
glutCreateWindow("hello3D");///這行不能超過大小跟定位點的那行 會改不出來
glutMotionFunc(motion);
glutMainLoop();
}
////回家作業 讓圖案旋轉
glPushMatrix();
glRotatef(rotX, 0,1,0);
glRotatef(rotY, 1,0,0);
//之前打的圖案的程式碼
glPopMatrix();
沒有留言:
張貼留言