c c 中的兩個反正切函式

2021-07-30 00:18:33 字數 959 閱讀 8873

在c語言的math.h或c++中的cmath中有兩個求反正切的函式atan(double x)與atan2(double y,double x)  他們返回的值是弧度 要轉化為角度再自己處理下。

前者接受的是乙個正切值(直線的斜率)得到夾角,但是由於正切的規律性本可以有兩個角度的但它卻只返回乙個,因為atan的值域是從-90~90 也就是它只處理一四象限,所以一般不用它。

第二個atan2(double y,double x) 其中y代表已知點的y座標 同理x ,返回值是此點與遠點連線與x軸正方向的夾角,這樣它就可以處理四個象限的任意情況了,它的值域相應的也就是-180~180了

例如:例1:斜率是1的直線的夾角

[cpp]view plain

copy

cout/45°

cout/45° 第一象限

cout/-135°第三象限

後兩個斜率都是1 但是atan只能求出乙個45°

例2:斜率是-1的直線的角度

[cpp]view plain

copy

cout/-45°

cout/-45° y為負 在第四象限

cout/135° x為負 在第二象限

常用的不是求過原點的直線的夾角 往往是求乙個線段的夾角 這對於atan2就更是如魚得水了

例如求a(1.0,1.0) b(3.0,3.0)這個線段ab與x軸正方向的夾角

用atan2表示為 atan2(y2-y1,x2-x1) 即 atan2(3.0-1.0,3.0-1.0)

它的原理就相當於把a點平移到原點b點相應變成b'(x2-x1,y2-y1)點 這樣就又回到先前了

例三:a(0.0,5.0) b(5.0,10.0)

線段ab的夾角為

[cpp]view plain

copy

cout/45°

反正切函式的應用

反正切函式的應用crawling in process.crawling failed time limit 1000msmemory limit 10000kb64bit io format i64d i64u submit status description 反正切函式可展開成無窮級數,有如下...

反正切函式的應用

description 反正切函式可展開成無窮級數,有如下公式 使用反正切函式計算pi是一種常用的方法。例如,最簡單的計算pi的方法 pi 4arctan 1 4 1 1 3 1 5 1 7 1 9 1 11 公式 2 然而,這種方法的效率很低,但我們可以根據角度和的正切函式公式 tan a b t...

反正切函式的應用

time limit 1000ms memory limit 10000k 反正切函式可展開成無窮級數,有如下公式 使用反正切函式計算pi是一種常用的方法。例如,最簡單的計算pi的方法 pi 4arctan 1 4 1 1 3 1 5 1 7 1 9 1 11 公式 2 然而,這種方法的效率很低,但...