0

对于这样的基本问题,我很抱歉,但我试图在 Android 上实现两个手指旋转,我在 SO 上找到了几个帖子,试图理解它们我不明白为什么有时 atan2 的结果被认为是-Pi 和 Pi,有时是 0、360 或 -180、180。

我真的无法理解这一点:https ://stackoverflow.com/a/10682187/1692502用户对应该小于 3.14 的结果执行模 %360 ...

谢谢

4

2 回答 2

3

假设您不了解 360° 和 2 Pi 的区别:表示圆的周长上的距离有多种不同的方式。0° 到 360°的角度可能是最常见的角度,但在科学计数法中,更常见的是使用弧度 - 这是单位圆周长上的距离。

如果您考虑单位圆(半径为 1 的圆),您会注意到周长是 2 Pi。如果你只绕半圈,那么它的周长就是 Pi - 你从 0° 转到 180°。因此,您在问题中提到的所有符号实际上都是相同的,只是以不同的方式表达。

atan2 返回一个介于 -Pi 和 +Pi 之间的值(覆盖 2 Pi,因此是一个完整的圆),可以使用 Math.toDegrees() 轻松转换为度数

于 2013-11-26T00:37:27.510 回答
0

来自atan2 的 Javadoc

公共静态双 atan2(双 y,双 x)

从直角坐标 (x, y) 到极坐标 (r, theta) 的转换中返回角度 theta。此方法通过计算 -pi 到 pi 范围内的 y/x 的反正切来计算相位 theta。

不确定混淆在哪里(似乎链接的 SO 答案是错误的)

于 2013-11-26T00:31:40.147 回答