atan與atan2在求角度時的差別

2021-08-27 04:12:15 字數 944 閱讀 3188

atan2(a,b)是4象限反正切,它的取值不僅取決於正切值a/b,還取決於點 (b, a) 落入哪個象限:

當點(b, a) 落入第一象限時,atan2(a,b)的範圍是 0 ~ pi/2;

當點(b, a) 落入第二象限時,atan2(a,b)的範圍是 pi/2 ~ pi;

當點(b, a) 落入第三象限時,atan2(a,b)的範圍是 -pi~-pi/2;

當點(b, a) 落入第四象限時,atan2(a,b)的範圍是 -pi/2~0

而 atan(a/b) 僅僅根據正切值為a/b求出對應的角度 (可以看作僅僅是2象限反正切):

當 a/b > 0 時,atan(a/b)取值範圍是 0 ~ pi/2;

當 a/b < 0 時,atan(a/b)取值範圍是 -pi/2~0

故 atan2(a,b) = atan(a/b) 僅僅發生在 點 (b, a) 落入第一象限 (b>0, a>0)或 第四象限(b>0, a<0)。當點 (b, a) 落入第

二、三象限時,很顯然atan2(a,b) 不等於 atan(a/b) ,並且atan2(a,b)也不可能等於 2*atan(a/b) 。這是因為,假如點 (b, a) 落入第二象限,則 a/b<0,  故atan(a/b)取值範圍始終是 -pi/2~0,2*atan(a/b) 的取值範圍是-pi~0,然而,atan2(a,b)的範圍是 pi/2 ~ pi,故不可能有atan2(a,b) = 2*atan(a/b) 。假如點(b, a) 落入第三象限,則則 a/b>0 , 故 atan(a/b) 取值範圍是 0 ~ pi/2,2*atan(a/b) 的取值範圍是 0 ~ pi,而此時atan2(a,b)的範圍是 -pi~-pi/2,很顯然,atan2(a,b) = 2*atan(a/b) 

舉個最簡單的例子,a = 1, b = -1,則 atan(a/b) = atan(-1) = -pi/4, 而 atan2(a,b) = 3*pi/4

參考:

atan2與atan的區別

對於tan y x 當點 x,y 在象限的邊界也就是座標軸上時 atan接受的是乙個正切值 直線的斜率 得到夾角,但是由於正切的規律性本可以有兩個角度的但它卻只返回乙個,因為atan的值域是從 90 90 也就是它只處理一四象限,所以一般不用它。atan2 double y,double x 其中y...

ATan2與ATan的區別

相比較atan,atan2究竟有什麼不同?本篇介紹一下atan2的用法及使用條件。對於tan y x atan y x 求出的 取值範圍是 pi 2,pi 2 atan2 y,x 求出的 取值範圍是 pi,pi 當 x,y 在第一象限,0 pi 2.當 x,y 在第二象限 pi 2 pi.當 x,y...

atan2 如何轉換為角度

math.atan2 函式返回點 x,y 和原點 0,0 之間直線的傾斜角.那麼如何計算任意兩點間直線的傾斜角呢?只需要將兩點x,y座標分別相減得到乙個新的點 x2 x1,y2 y1 然後利用他求出角度就可以了.使用下面的乙個轉換可以實現計算出兩點間連線的夾角.math.atan2 y2 y1,x2...