找到两个点之间的角度,分别对应于水平轴?

时间:2011-10-19 22:31:15

标签: math

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

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

  a = angle (~50 degrees, counter clockwise)

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

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

  a = angle (~135, counter clockwise)

我最终得到了一堆不同的案例,具体取决于第二点的象限。我认为必须有一个更简单,更通用的解决方案。这有点像试图找到圆的边缘上的点与其中心之间的角度,相对于原点的水平轴。

这样做的好方法是什么?

2 个答案:

答案 0 :(得分:8)

大多数编程语言/ API都提供了一个函数atan2(),它可以找到角度考虑象限。只需使用它。

答案 1 :(得分:0)

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

设p =(x0,y0)为第二点。 如果x = 0,那么答案是90度。 否则让m为y0 / x0。

y = m(x-x0)+ y0

m的角度是

tg ^ -1(即arctg)。

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