2011-10-19 63 views
1

我有两点,一个始终在原点(0,0),另一个可以在世界上的任何其他地方。我想找到他们之间的角度,分别与水平轴。找到两个点之间的角度,分别与水平轴线有关吗?

 |  2 
    | /
    | /
    |/ 
    |/ 
    |/ a 
    ---1-------------- (horizontal axis) 
    | 

    a = angle (~50 degrees, counter clockwise) 

在上面我会构建一个直角三角形和使用sohcahtoa找出缺角我想要的,但在第二点是在不同的象限像在这种情况下,它变得有点难看:

2 | 
\ | 
\ | 
    \ | 
    \a|a 
    \|a 
    ---1-------------- 
    | 
    | 

    a = angle (~135, counter clockwise) 

我只是最终得到了一堆不同的情况,这取决于第二点是什么象限。我在想,必须有一个更简单,通用的解决方案。这就像试图找出圆的边缘上的一个点与其中心之间的角度,相对于原点的水平轴。

这样做的好方法是什么?

回答

8

大多数编程语言/ API提供了一个函数atan2(),该函数发现角度需要考虑象限。只要使用它。

0

首先,我们想找到连接两点的直线方程:

令p =(X0,Y0)是第二点。 如果x = 0比答案是90度。否则让m为y0/x0。

Y =米的米(X-X0)+ Y0

TG^-1(即arctg)是角度。

还注意,如果(x0,y0)==(0,0)的角度比未定义的

相关问题