首先,我的数学不强!但我正在计算从原点(0,0)到(-1,-1)的点的角度.
该角度为225°或5π/ 4.
也许我的理解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.