我有两个点,一个始终在原点(0,0),另一个可以在世界的任何其他地方。我想找到它们之间的角度,分别对应于水平轴。
| 2
| /
| /
| /
| /
|/ a
---1-------------- (horizontal axis)
|
a = angle (~50 degrees, counter clockwise)
在上面我会构造一个直角三角形并使用sohcahtoa来找出我想要的缺角,但是当第二个点位于不同的象限时它会变得有点难看,就像在这种情况下一样:
2 |
\ |
\ |
\ |
\a|a
\|a
---1--------------
|
|
a = angle (~135, counter clockwise)
我最终得到了一堆不同的案例,具体取决于第二点的象限。我认为必须有一个更简单,更通用的解决方案。这有点像试图找到圆的边缘上的点与其中心之间的角度,相对于原点的水平轴。
这样做的好方法是什么?
答案 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),则角度未定义