|
glClearColor(0.0f,0.0f,0.8f,0.0f); //设置刷新背景色
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); //刷新背景
glLoadIdentity(); //重置当前视图模型观察矩阵
m_baspic->SeeScene(); //移动视点
m_baspic->picter(atof(str));
m_baspic->tietu();
…………………………………………
BOOL baspic::SeeScene()
{
float speed=50.2f; //步长
if(KEY_DOWN(VK_SHIFT)) speed=speed*4; //按shift时的加速
if(KEY_DOWN(VK_LEFT)) g_Angle-=speed; //左转,方位角-
if(KEY_DOWN(VK_RIGHT)) g_Angle+=speed; //右转,方位角+
rad_xz=float(3.13149*g_Angle/180.0f); //计算机左右旋转角度
if(KEY_DOWN(33)) g_elev+=speed; //page UP键--
if(KEY_DOWN(34)) g_elev-=speed; //page down键
if(g_elev<-360) g_elev=-360; //仰俯角
if(g_elev> 360) g_elev= 360; //仰俯角
if(KEY_DOWN(VK_UP)) //前进--
{
g_eye[2]+=(float)sin(rad_xz)*speed; //视点的Z分量
g_eye[0]+=(float)cos(rad_xz)*speed; //视点的X分量
}
if(KEY_DOWN(VK_DOWN)) //后退
{
g_eye[2]-=(float)sin(rad_xz)*speed; //视点的Z分量
g_eye[0]-=(float)cos(rad_xz)*speed; //视点的X分量
}
g_eye[1]=2.8;//设置摄像机对地位置高
g_look[0]=(float)(g_eye[0]+100*cos(rad_xz)); // 目标点x分量
g_look[2]=(float)(g_eye[2]+100*sin(rad_xz)); // 目标点Z分量
g_look[1]=g_eye[1]+g_elev; // 目标点Y分量
gluLookAt(g_eye[0],g_eye[1],g_eye[2], // 视点
g_look[0],g_look[1],g_look[2], // 目标点
0.0,1.0,0.0); //视点方向
return TRUE;
}
|
|