私の太陽系プログラムの一部として、すべてがうまく実装されているので、プログラムを拡張して、ユーザーがオーリーの周りを飛行できるようにしたり、矢印キーを使用して宇宙を飛行する宇宙船から眺めたりできるようにしました。これは私が基本的にやったことです:
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 平面でのステップの距離です。この部分でエラーが発生しなかったのに、なぜこの部分が機能しないのかわかりませんファイルをコンパイルしますが、矢印キーは機能しません。助けはありますか?