5

まず、私の数学は強くありません!しかし、原点 (0, 0) から (-1, -1) までの点の角度を計算していました。

この角度は 225° または 5π/4 です。

  • 5π/4 = 3.9269908169872415480783042290994
  • Math.Atan2(-1, -1) = -2.3561944901923448

私の理解Math.Atan2が間違っているかもしれませんが、原点が (0, 0) である円上の 2 点が与えられたときの角度を返すためのものだと思っていました。ここで起こっていると思われるのは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 に答える