我有centerX和centerY值的圓和半徑。現在我有(x1,y1)點位於圓上。我想知道點的圓的角度。我怎樣才能找到一個圓的兩個點之間的角度?
我試着用下面的公式得到(x1,y1)的角度。但它並沒有給出通用的解決方案。
radian = Math.Atan2(y1 - Cy, x1 - Cx);
angle = radian * (180/Math.PI);
請參考我的要求截圖。
任何人都請讓我建議我做錯了什麼?
我有centerX和centerY值的圓和半徑。現在我有(x1,y1)點位於圓上。我想知道點的圓的角度。我怎樣才能找到一個圓的兩個點之間的角度?
我試着用下面的公式得到(x1,y1)的角度。但它並沒有給出通用的解決方案。
radian = Math.Atan2(y1 - Cy, x1 - Cx);
angle = radian * (180/Math.PI);
請參考我的要求截圖。
任何人都請讓我建議我做錯了什麼?
從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;
由於跨度已經在* [ - 180,180] *之間,因此如果答案是否定的,用戶是不是應該只給最終答案加180? – Sometowngeek
@Sometowngeek No.例如當atan2給出-90(直接在中心以上)時,OP所需的相應結果將是270度。加180會給90,這是不正確的。 – meowgoesthedog
是否有任何直接解決方案來覆蓋360度..? – Bharathi
我相信這是因爲ATAN2給人-180到180度之間的答案,而你要0到360 – meowgoesthedog
我覺得這裏這涵蓋了數學[查找兩個點之間的夾角(https://開頭的數學。 stackexchange.com/questions/1201337/finding-the-angle-between-two-points) – Liam
@Liam我不認爲這是OP想要的 - atan2已經在該頁面上給出了他的結果。他想改變結果的範圍表示。 – meowgoesthedog