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

Ter*_*ich 7 javascript coordinates atan2 radians polar-coordinates

通常情况下,极坐标从0到π到2个π(之前2个π真的,因为它再次等于0).但是,在使用JavaScript atan2()函数时,我会得到一个不同的,奇怪的范围:

Cartesian X | Cartesian Y | Theta (?)
===========================================================
     1      |      0      | 0 (0 × π)
     1      |      1      | 0.7853981633974483 (0.25 × π)
     0      |      1      | 1.5707963267948966 (0.5 × π)
    -1      |      1      | 2.356194490192345 (0.75 × π)
    -1      |      0      | 3.141592653589793 (1 × π)
    -1      |     -1      | -2.356194490192345 (-0.75 × π)
     0      |     -1      | -1.5707963267948966 (-0.5 × π)
     1      |     -1      | -0.7853981633974483 (-0.25 × π)

正如你所看到的,在达到π(180°)后,它会跳到(-180°),然后再回到0.我怎么能让它使用范围{0,...,2 π }而不是{ - π,...,π }?我一直在尝试考虑每个计算来"修复"这些值,但我也想知道为什么JavaScript会选择这个范围而不是典型的极坐标范围.谢谢!

Gar*_*han 8

atan2返回该范围内的角度非常标准; 例如,这就是atan2C标准库中的功能.

如果你想要0..2pi而不是-pi..pi,测试结果是否为负数,如果是,则加2pi.


gat*_*rob 5

它的 atan2(y, x)atan2(x, y)

  • 哦天哪...花了我一个小时解决我的错误...谢谢!为什么有人会创建这样的API?这个命令有什么理由吗? (2认同)