Atan2

在三角函数中，两个参数的函数是正切函数的一个变种。对于任意不同时等于0的实参数和，所表达的意思是坐标原点为起点，指向的射线在坐标平面上与x轴正方向之间的角的角度。当时，射线与x轴正方向的所得的角的角度指的是x轴正方向绕逆时针方向到达射线旋转的角的角度；而当时，射线与x轴正方向所得的角的角度指的是x轴正方向绕顺时针方向达到射线旋转的角的角度。

在几何意义上，等价于，但的最大优势是可以正确处理而的情况，而不必进行会引发除零异常的操作。

函数最初在计算机编程语言中被引入，但是现在它的应用在科学和工程等其他多个领域十分常见。他的出现最早可以追溯到FORTRAN语言，并且可以在C语言的数学标准库的math.h文件中找到，此外在Java数学库、.NET的System.Math（可应用于C#、VB.NET等语言）、Python的数学模块以及其他地方都可以找到atan2的身影。许多脚本语言，比如Perl，也包含了C语言风格的atan2函数The Linux Programmer's Manual   says:

 "The atan2() function calculates the arc tangent of the two variables y and x.  It is similar to calculating the arc tangent of y / x, except that the signs of both arguments are used to determine the quadrant of the result."。

函数定义
该函数基于值域为  的反正切函数，定义如下：

说明:
 该函数的值域为，可以通过对负数结果加的方法，将函数的结果映射到范围内。

其他软件中的变形
不同计算机语言中该函数的实现各有差异。

vb6:

atan2(x,y)=

(x<>0+y<>0)*

(x<=0)*2*Atn(sgn(y)^sgn(y))/2^(x<>0)-

(x<>0)*Atn(y*x^(x<>0))

adodb.connect.execute:

SELECT (x<>0+y<>0)*(x<=0)*2*Atn(sgn(y)^sgn(y))/2^(x<>0)-(x<>0)*Atn(y*x^(x<>0)) AS AT_  FROM (SELECT Col1 AS x,Col2 AS y) T_

(x<>0+y<>0)可省略

有关图片

旁边的图片显示内容是：在一个单位圆内函数在各点的取值。圆内标注代表各点的取值的幅度表示。

图片中，从最左端开始，角度的大小随着逆时针方向逐渐从增大到，并且角度大小在点位于最右端时，取值为0。

另外要注意的是，函数中参数的顺序是倒置的，计算的值相当于点的角度值。

下方的图片显示的是单位圆上各点在atan2函数上的值，从原点射向点的射线，开始绕逆时针方向可以与x轴正方向得到对应各点的复平面的复角，其中几个特殊点取值：
对应的复平面夹角为，
对应复平面的夹角为，
对应复平面的夹角为，
回到复平面的夹角为。

这些你可以直观地从图中看出。

File:Atan2-discontinuity.svg

下面的插图分别显示的是和在坐标平面的三维景象。

注意在函数中，从原点辐射出的射线上有常数值，而在的函数中，经过原点的直线有常数值。

400px 400px

参考文献

参见
辐角
复数
反三角函数中的反正切（正切函数的反函數）

外部链接
Java 1.6 SE JavaDoc
C++ Programmer's Reference

Category:反三角函数