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

标签 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 选择这个范围而不是典型的极坐标范围。谢谢!

最佳答案

atan2 返回该范围内的 Angular 是非常标准的;例如,这就是 C 标准库中的 atan2 所做的。

如果您想要 0..2pi 而不是 -pi..pi,请测试结果是否为负,如果是则添加 2pi。

关于JavaScript atan2() 函数没有给出预期的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10343448/

相关文章:

javascript - Python 脚本将用户名设为空

javascript - 具有从一个数据数组到多个数组的函数的 Enter() 语句? (添加多个渐变路径)

dom - getBoundingClientRect() 在 XUL 中返回零

c - atan2 用于任意相移的两个正弦波?

Calc atan2 与 NEON

javascript - 我可以在 Grunt 中运行两次 'min' 任务吗?

javascript - 表达sendFile函数

javascript - 指定 Math.atan2 的来源

python - 将许多巨大的 CSV 文件中的 XYZ 坐标有效地排序为小图 block

java - 如何从 Java 中的图形中读取坐标?