2017-08-11 130 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

相关问题