Atan2

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

在几何意义上,\operatorname{atan2}(y,x)等价于\operatorname{atan}(\frac{y}{x}),但\operatorname{atan2}的最大优势是可以正确处理x=0而y\neq 0的情况,而不必进行会引发除零异常的\frac{y}{x}操作。

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

函数定义
该函数基于值域为 \left ( -\frac{\pi}{2}, \frac{\pi}{2} \right ) 的反正切函数,定义如下:

:\operatorname{atan2}(y, x) = \begin{cases}
\arctan\left(\frac y x\right) & \qquad x > 0 \\
\arctan\left(\frac y x\right) + \pi& \qquad y \ge 0 , x 0 , x = 0 \\
-\frac{\pi}{2} & \qquad y

说明:

  • 该函数的值域为\left( -\pi,\pi\right],可以通过对负数结果加2\pi的方法,将函数的结果映射到\left [ 0,2\pi\right )范围内。

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

vb6:

atan2(x,y)=

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

(x0)-

(x<>0)Atn(yx^(x<>0))

adodb.connect.execute:

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

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

有关图片
旁边的图片显示内容是:在一个单位圆内\operatorname{atan2}函数在各点的取值。圆内标注代表各点的取值的幅度表示。

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

另外要注意的是,函数\operatorname{atan2}(y,x)中参数的顺序是倒置的,\operatorname{atan2}(y,x)计算的值相当于点(x,y)的角度值。

下方的图片显示的是单位圆上各点在atan2函数上的值,从原点射向(0,1)点的射线,开始绕逆时针方向可以与x轴正方向得到对应各点的复平面的复角,其中几个特殊点取值:
*(0,1)对应的复平面夹角为\frac{\pi}{2},
*(-1,0)对应复平面的夹角为\pi,
*(0,-1)对应复平面的夹角为\frac{3\pi}{2},
*回到(1,0)复平面的夹角为0=(2n\pi \mod 2\pi)。

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

下面的插图分别显示的是\operatorname{atan2}(y,x)和\operatorname{atan}(\frac{y}{x})在坐标平面的三维景象。

注意在\operatorname{atan2}(y,x)函数中,从原点辐射出的射线上有常数值,而在\operatorname{atan}(\frac{y}{x})的函数中,经过原点的直线有常数值。

参考文献
参见
*辐角
*复数
*反三角函数中的反正切(正切函数的反函數)

外部链接
*[http://java.sun.com/javase/6/docs/api/java/lang/Math.html#atan2%28double,%20double%29 Java 1.6 SE JavaDoc]
*[http://www.cplusplus.com/ref/cmath/atan2.html C++ Programmer's Reference]

评论 (0)

  • 还没有评论,来抢沙发吧。