atan2是一个函数,在C语言里返回的是指方位角,C 语言中atan2的函数原型为 double atan2(double y, double x) ,返回以弧度表示的 y/x 的反正切。y 和 x 的值的符号决定了正确的象限。也可以理解为计算复数 x+yi 的辐角,计算时atan2 比 atan 稳定。
公式
语法
函数原型
C语言函数原型:double atan2(double y, double x)
参数
返回值
atan2函数返回的是原点至点(x,y)的方位角,即与 x 轴的夹角。也可以理解为复数 x+yi 的辐角。返回值的单位为弧度,取值范围为 。
说明
在数学坐标系中,结果为正表示从 X 轴逆时针旋转的角度,结果为负表示从 X 轴顺时针旋转的角度。
ATAN2(a, b) 与 ATAN(a/b)稍有不同,ATAN2(a,b)的取值范围介于 -pi 到 pi 之间(不包括 -pi),
而ATAN(a/b)的取值范围介于-pi/2到pi/2之间(不包括±pi/2)。
若要用度表示反正切值,请将结果再乘以 180/3.14159。
另外要注意的是,函数atan2(y,x)中参数的顺序是倒置的,atan2(y,x)计算的值相当于点(x,y)的角度值。
功能比较
(1)Excel中ATAN2
Excel 里 ATAN2(x,y)返回的是原点至点(x,y)的方位角。返回值的单位为弧度,取值范围为 。
注意:
1、C 函数与 Excel 函数的参数顺序正好相反;
2、C 函数允许 x、y 同时为零,Excel 不允许 x、y 同时为零。
与 atan 的不同
atan2 比 atan 稳定。
如:atan(y/x),当 y 远远大于 x 时,计算结果是不稳定的。
atan2(y,x)的做法:当 x 的绝对值比 y 的绝对值大时使用 atan(y/x);反之使用 atan(x/y)。这样就保证了数值稳定性。
(2)与C语言中atan函数比较
atan函数:
原型:extern float atan(float x);
用法:#include
功能:求x(弧度表示)的反正切值。
说明:值域为(-π/2,+π/2)。
atan2 函数
功能:求y/x(弧度表示)的反正切值。
应用示例
示例一
编译并运行上面的程序,这将产生以下结果:
示例二
下面这个例子可通过 atan2() 方法返回不同 (x,y) 点的角度:javascript实例