我有两个点,一个总是在原点(0,0),另一个可以在世界上的任何地方。我想求出它们之间,相对于横轴的夹角。
| 2
| /
| /
| /
| /
|/ a
---1-------------- (horizontal axis)
|
a = angle (~50 degrees, counter clockwise)
在上面的例子中,我会构造一个直角三角形并使用sohcahtoa来计算我想要的缺失的角,但是当第二个点在不同的象限中时,它会变得有点难看,就像在这种情况下:
2 |
|
|
|
a|a
|a
---1--------------
|
|
a = angle (~135, counter clockwise)
我只会得到一堆不同的情况取决于第二个点在哪个象限。我在想一定有一个更简单的通解。这有点像试图找出圆边缘上的一点与圆心之间的夹角,相对于原点的水平轴。
做这件事的好方法是什么?
大多数编程语言/api提供了一个函数atan2()
,该函数查找角度,并且考虑象限。
首先我们要找出连接两点的直线的方程:
设p = (x0,y0)为第二点。如果x=0,那么答案是90度。否则设m = y0/x0
y = m(x-x0) +y
tg^-1(即arctg) (m)为角度
还要注意,如果(x0,y0) ==(0,0),则角度为未定义