作为我的太阳能系统程序的一部分,一切都很好地实现了,我试图扩展我的程序以包括用户可以在 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 平面中的步距。我不知道为什么这部分不起作用,即使我在这部分中没有任何错误,所有编译文件但箭头键不起作用。有什么帮助吗?