atan2是一個函式,在C語言裡返回的是指方位角,C 語言中atan2的函式原型為 double atan2(double y, double x) ,返回以弧度表示的 y/x 的反正切。y 和 x 的值的符號決定了正確的象限。也可以理解為計算複數 x+yi 的輻角,計算時atan2 比 atan 穩定。
基本介紹
- 中文名:atan2
- 外文名:atan2
- 起點:坐標原點
- X坐標: 點的 X 坐標。
- Y坐標: 點的 Y 坐標。
- 功能:計算方位角
- 套用:C語言編程等
atan2的公式,atan2語法,C語言函式原型,參數,返回值,說明,功能比較,套用示例,示例一,示例二,
atan2的公式
atan2語法
C語言函式原型
double atan2(double y, double x)
參數
- x-- 代表 x 軸坐標的浮點值。
- y-- 代表 y 軸坐標的浮點值。
返回值
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 <math.h>
功能:求x(弧度表示)的反正切值。
說明:值域為(-π/2,+π/2)。
用法:#include <math.h>
功能:求x(弧度表示)的反正切值。
說明:值域為(-π/2,+π/2)。
atan2 函式
功能:求y/x(弧度表示)的反正切值。
套用示例
示例一
#include <stdio.h>#include <math.h>#define PI 3.14159265int main (){ double x, y, ret, val; x = -7.0; y = 7.0; val = 180.0 / PI; ret = atan2 (y,x) * val; printf("x = %lf, y = %lf 的反正切", x, y); printf("是 %lf 度\n", ret); return(0);}
編譯並運行上面的程式,這將產生以下結果:
x = -7.000000, y = 7.000000 的反正切是 135.000000 度
示例二
下面這個例子可通過 atan2() 方法返回不同 (x,y) 點的角度:javascript實例
<scripttype="text/javascript">document.write(Math.atan2(0.50,0.50)+"<br/>")document.write(Math.atan2(-0.50,-0.50)+"<br/>")document.write(Math.atan2(5,5)+"<br/>")document.write(Math.atan2(10,20)+"<br/>")document.write(Math.atan2(-5,-5)+"<br/>")document.write(Math.atan2(-10,10))</script>