我们首先来看 t a n θ = y / x tan \theta= y/x tanθ=y/x :
当点(x, y)在坐标轴上时:
当 y y y 是 0 0 0, x x x 为非负值, θ = 0 θ = 0 θ=0 .
当 y y y 是 0 0 0, x x x 是负值, θ = π θ = \pi θ=π .
当 y y y 是正值, x x x 是 0 0 0, θ = π 2 θ = {\frac {\pi}2} θ=2π .
当 y y y 是负值, x x x 是 0 0 0, θ = − π 2 θ = -{\frac {\pi}2} θ=−2π .
a t a n ( a r c t a n ) atan(arctan) atan(arctan) 是反正切函数,给定一个数求出其的角度,本来应返回两个角度,但是他只返回一个,因为 a t a n atan atan 的值域是从 ( − π 2 , π 2 ) (-{\frac {\pi}2},{\frac {\pi}2}) (−2π,2π),也就是说它只处理第一象限和第四象限,所以一般不用它。
a t a n 2 ( y , x ) atan2(y,x) atan2(y,x) 其中 y y y 代表已知点的 y y y 坐标,同理 x x x ,返回值是此点与远点连线与 x x x 轴正方向的夹角,返回以弧度表示的 y / x y/x y/x 的反正切。 y y y 和 x x x 的值的符号决定了正确的象限。也可以理解为计算复数 x + y i x+yi x+yi 的辐角,计算时 a t a n 2 atan2 atan2 比 a t a n atan atan 稳定。可以处理四个象限的任意情况,它的值域相应的也就是 ( − π , π ) (-\pi,\pi) (−π,π) 。
a t a n 2 ( y , x ) atan2(y, x) atan2(y,x)是四象限反正切,它的取值不仅取决于正切值 y / x y/x y/x ,还取决于点 ( x , y ) (x, y) (x,y) 落入哪个象限:
总结:
θ = a t a n ( y / x ) θ = atan(y / x) θ=atan(y/x) 求出的θ取值范围是 ( − π 2 , π 2 ) (-{\frac {\pi}2},{\frac {\pi}2}) (−2π,2π) 。
θ = a t a n 2 ( y , x ) θ = atan2(y, x) θ=atan2(y,x) 求出的θ取值范围是 ( − π , π ) (-\pi,\pi) (−π,π) 。
double atan2(double y, double x)
参数
返回值
atan2函数返回的是原点至点(x,y)的方位角,即与 x 轴的夹角。也可以理解为复数 x+yi 的辐角。返回值的单位为弧度,取值范围为 ( − π , π ) (-\pi,\pi) (−π,π)
import math
math.atan2(y, x)
参数
返回值
返回给定的 X 及 Y 坐标值的反正切值。
P = atan2(Y, X)
P = atan2(Y, X)
返回 Y 和 X 的四象限反正切 t a n − 1 tan^{-1} tan−1,该值必须为实数。 a t a n 2 atan2 atan2 函数遵循当 x x x 在数学上为零(或者为 0 0 0 或 − 0 -0 −0)时 a t a n 2 ( x , x ) atan2(x,x) atan2(x,x) 返回 0 0 0 的约定。