2013-05-20 172 views
1

我需要一些幫助計算點的角度: enter image description hereC++的角度,三角

我需要計算從點(0,0)的角度以從圖像中提取點。 1將是0 *,2是大約40-44 *等

我的問題是,atan2顯示不正確的值。 當前ATAN2的輸出是:

1:41.867535 2:64.653824 3:52.915009 4:30.375608 5:13.328092 

如何從點0,0計算呢?我無法使用任何非標準庫。

我還在做錯事。我想:

arrow1 = (M_PI - atan2(y, x) * (180/M_PI); 

輸出:

1: 131.867538 2: 154.653824 3: 142.915009 4: 120.375610 5: 103.328094 

和:

arrow1 = (M_PI - atan2(y, -x) * (180/M_PI); 

輸出:

1: 48.132465 2: 25.346176 3: 37.084991 4: 59.624393 5: 76.671906 
+0

請顯示你的代碼,以便我們可以幫你弄清楚。 – Escualo

+0

現有的代碼工作正常(找到圖像的部分等是好的)。我的問題是缺少計算角度的代碼。輸出來自簡單:arrow1 = atan2(x,y)* 180/M_PI; – user2336450

回答

4

的角度atan2(deltaY, deltaX)返回將是角度,在弧度,從X軸逆時針秒。

您目前正在使用arrow1 = atan2(x,y) *180/M_PI;,所以您需要將其轉換爲使用(y,x),然後再切換,以便從-X順時針旋轉角度,而不是從+ X逆時針旋轉。

這意味着點1的角度(如果您將其作爲atan2(-1, 0)喂入)將爲180度。爲了達到你想要的角度,它應該是:

double angleFromX = atan2(deltaY, deltaX); 
double angle = M_PI - angleFromX; 
double angleInDegrees = 180 * angle/M_PI; 
+0

另外,不要忘記添加檢查對'x == 0'。 – cabbagery