2016年3月21日 星期一

Week05



下載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");///這行不能超過大小跟定位點的那行 會改不出來

    glutDisplayFunc(display);
    glutMotionFunc(motion);

    glutMainLoop();

}



////回家作業   讓圖案旋轉
    glPushMatrix();
    glRotatef(rotX, 0,1,0);
    glRotatef(rotY, 1,0,0);
//之前打的圖案的程式碼

    glPopMatrix();

沒有留言:

張貼留言