atan2与atan的区别

atan2: Four-quadrant inverse tangent. 四象限反正切函数. Also known as the "quadrant-sensitive'' arctangent function。即atan2()是对象限敏感的,或者说atan2根据输入参数来确定所要求的目标角是在哪个象限,并由此给出合适的结果。因此atan2()的值域是[-pi, pi]。也正因为atan2()需要确定目标角的象限,所以atan2的参数是以(y,x)的方式指定,因此atan2(y,x)与atan2(-y,-x)所给出的结果是不一样的,虽然(y/x) = ((-y)/(-x))。

与之现对的是,atan(y/x)  like the more traditional mathematical notation $ \tan^{-1}(y/x)$ does not ``know'' the quadrant of $ (x,y)$ , so it maps the entire real line to the interval $ (-\pi/2,\pi/2)$ . 这是说atan()是不关心象限,或者说对象限不敏感,它的值域[-pi/2, pi/2]。atan的输入参数是一个数(表示y/x,而不是像atan2()那样指定两个数)也决定了它是无法“感知”象限的,原因恰好也在于:(y/x) = ((-y)/(-x))!

所以,比如说,(x1,y1) = (3,4)和(x2,y2) = (-3,-4),用atan2来计算这两个坐标点的角度的话,结果是不一样的:

atan2(4,3) = 0.9273

atan2(-4,-3) = -2.2143 = 0.9273 - pi

两者之间恰好相差pi。

而用atan来求的话,就相等了。因为(4/3) = ((-4)/(-3)),atan无法区分两者。

 

 

reference:

[1] https://www.mathworks.com/help/matlab/ref/atan2.html

[2] https://ccrma.stanford.edu/~jos/mdft/Complex_Plane.html

你可能感兴趣的:(atan2与atan的区别)