目录
atan2: Four-quadrant inverse tangent.
总结
简而言之,atan2与atan的区别体现在两个方面:
(1) atan2接收两个输入参数;atan只接收一个输入参数
(2) atan2对象限敏感,根据两个参数判断它是属于哪个象限并给出对应的角度值,值域范围[-pi, pi];atan对象限不敏感,值域范围为[-pi/2, pi/2]
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
与之相对的是,atan(y/x) like the more traditional mathematical notation
does not ``know'' the quadrant of
, so it maps the entire real line to the interval: .
这是说atan()是不关心象限,或者说对象限不敏感,它的值域[-pi/2, pi/2]。
atan的输入参数是一个数(表示y/x,而不是像atan2()那样指定两个数)也决定了它是无法“感知”象限的,原因恰好也在于:.
距离对比
所以,比如说,(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: