通常,极坐标从 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 选择这个范围而不是典型的极坐标范围。谢谢!
最佳答案
atan2
返回该范围内的 Angular 是非常标准的;例如,这就是 C 标准库中的 atan2
所做的。
如果您想要 0..2pi 而不是 -pi..pi,请测试结果是否为负,如果是则添加 2pi。
关于JavaScript atan2() 函数没有给出预期的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10343448/