如何检测旋转的弧度?
How to detect a rotated radian?
我在 C
做 LunarLander
。
我的船在 PI/2
和 -PI/2
之间旋转。每步旋转 PI/ 20
。我需要一种方法来检测我的船何时旋转了 1 弧度。所以,当旋转1弧度时,燃料减少我1个单位。
我想到的是先把我的角度传给度数再看角度是否大于57,因为1弧度就是57度。
但是我不能把它写在我的程序中,因为这个想法是不完整的。
虽然这只是我的想法,但我认为解决方案来自那边,与那些57度相比
while(1)
//code
case SDLK_RIGHT:
angle += SHIP_ROTATION_PER_STEP;
if(angle > (PI/2)){
angle = (PI/2);
break;
}
break;
case SDLK_LEFT:
angle -= SHIP_ROTATION_PER_STEP;
if(angle < -(PI/2)){
angle = -(PI/2);
break;
}
break;
//code
//during the while
我需要一个想法来比较是否所有移动我的船的都是 1 弧度。如果每步旋转的总和大于 1 弧度。但是我想不出来
保留一个累加器total_angle
。每当船向任一方向旋转时,加上旋转的绝对值。假设您的旋转是浮点 double
类型,这意味着:
total_angle += fabs(angle); /* angle is the increment in angle */
让我们假设 angle
和 total_angle
只是直接测量弧度,而不是某种缩放整数版本或其他任何形式。在这种情况下,只要 total_angle
达到或超过 1.0
,我们就会减去一个单位的燃料。同时,我们从累加器中减去1.0
:
if (total_angle >= 1.0) {
fuel--;
total_angle -= 1.0;
}
我们假设单次旋转不大于一个弧度,否则我们必须将其设为 while 循环。
我在 C
做 LunarLander
。
我的船在 PI/2
和 -PI/2
之间旋转。每步旋转 PI/ 20
。我需要一种方法来检测我的船何时旋转了 1 弧度。所以,当旋转1弧度时,燃料减少我1个单位。
我想到的是先把我的角度传给度数再看角度是否大于57,因为1弧度就是57度。 但是我不能把它写在我的程序中,因为这个想法是不完整的。 虽然这只是我的想法,但我认为解决方案来自那边,与那些57度相比
while(1)
//code
case SDLK_RIGHT:
angle += SHIP_ROTATION_PER_STEP;
if(angle > (PI/2)){
angle = (PI/2);
break;
}
break;
case SDLK_LEFT:
angle -= SHIP_ROTATION_PER_STEP;
if(angle < -(PI/2)){
angle = -(PI/2);
break;
}
break;
//code
//during the while
我需要一个想法来比较是否所有移动我的船的都是 1 弧度。如果每步旋转的总和大于 1 弧度。但是我想不出来
保留一个累加器total_angle
。每当船向任一方向旋转时,加上旋转的绝对值。假设您的旋转是浮点 double
类型,这意味着:
total_angle += fabs(angle); /* angle is the increment in angle */
让我们假设 angle
和 total_angle
只是直接测量弧度,而不是某种缩放整数版本或其他任何形式。在这种情况下,只要 total_angle
达到或超过 1.0
,我们就会减去一个单位的燃料。同时,我们从累加器中减去1.0
:
if (total_angle >= 1.0) {
fuel--;
total_angle -= 1.0;
}
我们假设单次旋转不大于一个弧度,否则我们必须将其设为 while 循环。