这是图形学第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
下载~