首先,我的数学不强!但是我正在计算一个点从原点 (0, 0) 到 (-1, -1) 的角度。
这个角度是 225° 或 5π/4。
- 5π/4 = 3.9269908169872415480783042290994
- Math.Atan2(-1, -1) = -2.3561944901923448
也许我对 Math.Atan2
的理解不正确,但我认为它是为了返回给定原点为 (0, 0) 的圆上的两个点的角度。我假设这里发生的是 Atan2
的结果是“翻转”的,因为它位于 X 轴的负侧......有人可以确认并提供正确的方法吗?
这是我的测试,失败了:
Assert.AreEqual((5 * Math.PI) / 4, Math.Atan2(-1, -1));
这是我的 PointD
类,它包含点 X 和 Y:
public double ToRadians()
{
double radians = Math.Atan2(this.Y, this.X);
return radians;
}
最佳答案
你的假设是正确的。 Atan2
给出的结果在 -pi 到 +pi 范围内。* 如果您想要一个 0 到 2pi 范围内的数字,如果结果小于 0,只需添加 2pi .
注意:像这样断言浮点值相等通常不是一个好主意...
* 为了将来引用,这类细节通常在文档中明确给出。例如:http://msdn.microsoft.com/en-us/library/system.math.atan2.aspx .
关于c# - Math.Atan2 产生奇怪的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14927585/