2013-02-17 120 views
4

首先,我的數學不強!但我正在計算從原點(0,0)到(-1,-1)的點的角度。Math.Atan2會產生奇怪的結果嗎?

該角度爲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; 
} 

回答

13

你的假設是正確的。 Atan2給出了範圍-pi到+ pi的結果。 *如果您要在二皮範圍爲0的數字,只需添加二皮如果結果小於0


注:斷言平等浮點值,這樣通常不一個好主意......


*以供將來參考,這種細節通常是明確的文檔中給出。例如:http://msdn.microsoft.com/en-us/library/system.math.atan2.aspx

+0

謝謝你的作品。說實話,我的確看到了這個功能,但我非常密集,而且你用英語拼寫出來對我來說更容易! – 2013-02-18 00:13:33

相關問題