c - 如何检测旋转的弧度?

标签 c angle radians

我正在用 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 */

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

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

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

关于c - 如何检测旋转的弧度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57190188/

相关文章:

c - 关于C中指向指针的指针

以增加的角度绘制线条

latitude-longitude - 经度/纬度到四元数

JavaScript atan2() 函数没有给出预期的结果

MATLAB sin() 与 sind()

c++ - 如何从带符号的零中去掉减号

c - 这是在 Atom 中运行 C 代码的正确方法吗?

mysql - 编译MySQL C API客户端未链接libmysqlclient.so.20

python - 如何在pandas dataframe Python中找到GPS坐标之间的角度