【发布时间】:2012-04-20 04:51:23
【问题描述】:
作为我的太阳系计划的一部分,一切都很好地实现了,我试图扩展我的程序以包括用户可以在 orrey 周围飞行,或者换句话说,通过使用方向键。这就是我基本上所做的:
void keyboard(unsigned char key, int x, int y)
{
switch (key)
{
case 27: /* Escape key */
exit(0);
break;
case (GLUT_KEY_LEFT): lon += TURN_ANGLE;
if(lon == 360)
lon = 0;
break;
case (GLUT_KEY_RIGHT):
lon -= TURN_ANGLE;
if(lon == -360)
lon = 0;
break;
case (GLUT_KEY_PAGE_UP):
if(lat + TURN_ANGLE <= 90)
lat += TURN_ANGLE;
break;
case (GLUT_KEY_UP): eyex += sin(DEG_TO_RAD * (lon)) * RUN_SPEED;
eyez += cos(DEG_TO_RAD * (lon)) * RUN_SPEED;
break;
case (GLUT_KEY_DOWN): eyex -= sin(DEG_TO_RAD * (lon)) * RUN_SPEED;
eyez -= cos(DEG_TO_RAD * (lon)) * RUN_SPEED;
break;
default: break;
}
}
其中lat 和lon 是与当前眼点一起使用的全局角度(eyex、eyey、eyez),以及
RUN_SPEED 进入 XZ 平面的距离。我不知道为什么这部分不起作用,即使我在这部分中没有任何错误,所有编译文件但箭头键不起作用。有什么帮助吗?
【问题讨论】: