這是圖形學第3次練習,利用gluLookAt()函數實現視點跟蹤。
我繪製了一個模擬地球,觀察點確定在地球的“後方”,每次變換方向時,觀察點也隨之變換。
user_eye[0] = pos[0] + ((float)sin(rad))*5;
user_eye[2] = pos[2] + ((float)cos(rad))*5;
其中,user_eye[]是觀察點,pos是地球的位置,也是看的位置,通俗理解就是眼睛一直盯着地球。
根據旋轉的角度和速度來確定在Z軸上移動位置:
static GLfloat PI = 3.1415926;
rad = float(PI*(angle_Y)/180.0f); // 計算弧度值
pos[2] += (float)cos(rad) * moveSpeed;
pos[0] += (float)sin(rad) * moveSpeed;
其中 angle_Y是控制地球左右旋轉的角度,moveSpeed是每次移動的步長
最後
gluLookAt(user_eye[0] , user_eye[1], user_eye[2],
pos[0], pos[1], pos[2],
0.0f, 1.0f, 0.0f);
具體代碼下載請到:
http://download.csdn.net/source/1178486
下載~