Math.Atan2产生奇怪的结果?

Jos*_* M. 4 c# math .net-4.0

首先,我的数学不强!但我正在计算从原点(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));
Run Code Online (Sandbox Code Playgroud)

这是我的PointD班级,它持有点X和Y:

public double ToRadians()
{
    double radians = Math.Atan2(this.Y, this.X);

    return radians;
}
Run Code Online (Sandbox Code Playgroud)

Oli*_*rth 13

你的假设是正确的. Atan2给出-pi到+ pi范围内的结果.* 如果你想要一个0到2pi范围内的数字,如果结果小于0,只需加2pi.


注意:断言像这样的浮点值的相等通常不是一个好主意......


*为了将来参考,这种细节通常在文档中明确给出.例如:http://msdn.microsoft.com/en-us/library/system.math.atan2.aspx.