国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C/C++中的atan和atan2函數(shù)

2019-11-06 07:32:47
字體:
供稿:網(wǎng)友

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

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

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

例如:

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

cout<<atan(1.0)*180/PI;//45°

cout<<atan2(1.0,1.0)*180/PI;//45° 第一象限

cout<<atan2(-1.0,-1.0)*180/PI;//-135°第三象限

后兩個斜率都是1 但是atan只能求出一個45°

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

cout<<atan(-1.0)*180/PI;//-45°

cout<<atan2(-1.0,1.0)*180/PI;//-45° y為負(fù) 在第四象限

cout<<atan2(1.0,-1.0)*180/PI;//135° x為負(fù) 在第二象限

 

常用的不是求過原點的直線的夾角 往往是求一個線段的夾角 這對于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)

它的原理就相當(dāng)于把A點平移到原點B點相應(yīng)變成B'(x2-x1,y2-y1)點 這樣就又回到先前了

例三:

A(0.0,5.0) B(5.0,10.0)

線段AB的夾角為

cout<<atan2(5.0,5.0)*180/PI;//45°

^_^

轉(zhuǎn)自:點擊打開鏈接


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 孝感市| 楚雄市| 泌阳县| 高淳县| 措勤县| 汉川市| 如东县| 宜城市| 会昌县| 曲沃县| 绥江县| 赤峰市| 嘉禾县| 永川市| 镇雄县| 庆安县| 遵化市| 大埔区| 东城区| 拉萨市| 儋州市| 资溪县| 北京市| 偃师市| 榆树市| 崇阳县| 曲阳县| 阳东县| 阿克苏市| 万盛区| 凉山| 喀喇沁旗| 淳安县| 施秉县| 宜州市| 碌曲县| 东安县| 平山县| 西昌市| 长垣县| 越西县|