如何检测旋转的弧度?

How to detect a rotated radian?

我在 CLunarLander。 我的船在 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 */

让我们假设 angletotal_angle 只是直接测量弧度,而不是某种缩放整数版本或其他任何形式。在这种情况下,只要 total_angle 达到或超过 1.0,我们就会减去一个单位的燃料。同时,我们从累加器中减去1.0

if (total_angle >= 1.0) {
    fuel--;
    total_angle -= 1.0;
}

我们假设单次旋转不大于一个弧度,否则我们必须将其设为 while 循环。