C/C++中的atan和atan2函數(shù)實(shí)例用法
在C語言的math.h或C++中的cmath中有兩個(gè)求反正切的函數(shù)atan(double x)與atan2(double y,double x) 他們返回的值是弧度 要轉(zhuǎn)化為角度再自己處理下。
前者接受的是一個(gè)正切值(直線的斜率)得到夾角,但是由于正切的規(guī)律性本可以有兩個(gè)角度的但它卻只返回一個(gè),因?yàn)閍tan的值域是從-90~90 也就是它只處理一四象限,所以一般不用它。
第二個(gè)atan2(double y,double x) 其中y代表已知點(diǎn)的Y坐標(biāo) 同理x ,返回值是此點(diǎn)與遠(yuǎn)點(diǎn)連線與x軸正方向的夾角,這樣它就可以處理四個(gè)象限的任意情況了,它的值域相應(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°第三象限
后兩個(gè)斜率都是1 但是atan只能求出一個(gè)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ù) 在第二象限
常用的不是求過原點(diǎn)的直線的夾角 往往是求一個(gè)線段的夾角 這對(duì)于atan2就更是如魚得水了
例如求A(1.0,1.0) B(3.0,3.0)這個(gè)線段AB與x軸正方向的夾角
用atan2表示為 atan2(y2-y1,x2-x1) 即 atan2(3.0-1.0,3.0-1.0)
它的原理就相當(dāng)于把A點(diǎn)平移到原點(diǎn)B點(diǎn)相應(yīng)變成B'(x2-x1,y2-y1)點(diǎn) 這樣就又回到先前了
例三:
A(0.0,5.0) B(5.0,10.0)
線段AB的夾角為
cout<<atan2(5.0,5.0)*180/PI;//45°
以上就是腳本之家整理的相關(guān)內(nèi)容,希望能夠幫助到大家。
相關(guān)文章
Qt中Tab與Tree組件實(shí)現(xiàn)分頁菜單
本文主要介紹tabWidget選擇夾組件與TreeWidget樹形選擇組件的常用方法及靈活運(yùn)用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-12-12C語言動(dòng)態(tài)內(nèi)存函數(shù)(malloc、calloc、realloc、free)詳解
在C語言中,動(dòng)態(tài)內(nèi)存函數(shù)是塊重要的知識(shí)點(diǎn),以往,我們開辟空間都是固定得,數(shù)組編譯結(jié)束后就不能繼續(xù)給它開辟空間了,開辟的空間滿了,就不能在開辟空間了,學(xué)習(xí)本文章,我們就可以解決這個(gè)問題,向內(nèi)存申請(qǐng)空間,感興趣的小伙伴跟著小編一起來看看吧2023-08-08C語言模擬內(nèi)存函數(shù)分析之mencpy與memmove
這篇文章主要介紹了C語言詳解如何模擬內(nèi)存函數(shù),用到了mencpy與memmove兩個(gè)函數(shù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03C++?二叉樹的實(shí)現(xiàn)超詳細(xì)解析
二叉樹可以簡單理解為對(duì)于一個(gè)節(jié)點(diǎn)來說,最多擁有一個(gè)上級(jí)節(jié)點(diǎn),同時(shí)最多具備左右兩個(gè)下級(jí)節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)。本文將詳細(xì)介紹一下C++中二叉樹的實(shí)現(xiàn)和遍歷,需要的可以參考一下2022-03-03如何用C寫一個(gè)web服務(wù)器之I/O多路復(fù)用
本文主要介紹了如何用C寫一個(gè)web服務(wù)器之I/O多路復(fù)用,本次選擇了 I/O 模型的優(yōu)化,因?yàn)樗欠?wù)器的基礎(chǔ),這個(gè)先完成的話,后面的優(yōu)化就可以選擇各個(gè)模塊來進(jìn)行,不必進(jìn)行全局化的改動(dòng)了。2021-05-05