2017-08-11 81 views
4

我有centerX和centerY值的圓和半徑。現在我有(x1,y1)點位於圓上。我想知道點的圓的角度。我怎樣才能找到一個圓的兩個點之間的角度?

我試着用下面的公式得到(x1,y1)的角度。但它並沒有給出通用的解決方案。

radian = Math.Atan2(y1 - Cy, x1 - Cx); 
angle = radian * (180/Math.PI); 

請參考我的要求截圖。

enter image description here

任何人都請讓我建議我做錯了什麼?

+1

我相信這是因爲ATAN2給人-180到180度之間的答案,而你要0到360 – meowgoesthedog

+0

我覺得這裏這涵蓋了數學[查找兩個點之間的夾角(https://開頭的數學。 stackexchange.com/questions/1201337/finding-the-angle-between-two-points) – Liam

+0

@Liam我不認爲這是OP想要的 - atan2已經在該頁面上給出了他的結果。他想改變結果的範圍表示。 – meowgoesthedog

回答

6

MSDN documentation page for Atan2,它返回-180到180度之間的結果(-π到pi弧度)。另一方面,您需要0到360.要做到這一點,只需將度數加上360即可。

radian = Math.Atan2(y1 - Cy, x1 - Cx); 
angle = radian * (180/Math.PI); 
if (angle < 0.0) 
    angle += 360.0; 
+1

由於跨度已經在* [ - 180,180] *之間,因此如果答案是否定的,用戶是不是應該只給最終答案加180? – Sometowngeek

+1

@Sometowngeek No.例如當atan2給出-90(直接在中心以上)時,OP所需的相應結果將是270度。加180會給90,這是不正確的。 – meowgoesthedog

+0

是否有任何直接解決方案來覆蓋360度..? – Bharathi

相關問題