5

首先,我的数学不强!但我正在计算一个点从原点 (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;
}
4

1 回答 1

14

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


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


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

于 2013-02-18T00:01:16.813 回答