亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C ++中的atan和atan2有什么區別?

C ++中的atan和atan2有什么區別?

C++
蝴蝶刀刀 2019-12-16 09:52:10
C ++中的atan和atan2有什么區別?atan和atan2C ++ 和有什么不一樣?
查看完整描述

4 回答

?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

std::atan2允許計算所有四個象限的反正切。std::atan僅允許從象限1和4計算。


查看完整回答
反對 回復 2019-12-16
?
SMILET

TA貢獻1796條經驗 獲得超4個贊

從學校數學中我們知道切線的定義


tan(α) = sin(α) / cos(α)

然后根據提供給函數的角度區分四個象限。的符號sin,cos并且tan具有以下關系(我們忽略的精確倍數π/2):


  Quadrant    Angle              sin   cos   tan

-------------------------------------------------

  I           0    < α < π/2      +     +     +

  II          π/2  < α < π        +     -     -

  III         π    < α < 3π/2     -     -     +

  IV          3π/2 < α < 2π       -     +     -

鑒于的值為tan(α)正,我們無法區分該角度是來自第一象限還是第三象限,如果該角度為負,則它可能來自第二象限或第四象限。因此,按照慣例,無論切線的原始輸入如何,都atan()從第一或第四象限(即-π/2 <= atan() <= π/2)返回一個角度。


為了獲取全部信息,我們不能使用除法的結果,sin(α) / cos(α)而必須分別查看正弦和余弦的值。這就是atan2()它的作用。這需要兩者的sin(α)和cos(α),并通過添加解決所有四個象限π到的結果,atan()每當余弦為負。


備注:該atan2(y, x)函數實際上帶有y和x參數,這是在y和x軸上具有長度v和角度的向量的投影α,即


y = v * sin(α)

x = v * cos(α)

給出關系


y/x = tan(α)

結論: atan(y/x)保留了一些信息,只能假定輸入來自象限I或IV。相反,atan2(y,x)獲取所有數據并因此可以解析正確的角度。


查看完整回答
反對 回復 2019-12-16
?
FFIVE

TA貢獻1797條經驗 獲得超6個贊

實際值以弧度為單位,但以度為單位來解釋,則為:

  • atan =給出-90至90之間的角度值

  • atan2 =給出介于-180和180之間的角度值

對于我的工作而言,它涉及導航中的航向和方位等各種角度的計算,atan2在大多數情況下都可以完成工作。


查看完整回答
反對 回復 2019-12-16
?
鴻蒙傳說

TA貢獻1865條經驗 獲得超7個贊

atan(x)返回x的反正切的主值,以弧度表示。

atan2(y,x)返回y / x的反正切的主值,以弧度表示。

注意,由于符號的含糊性,函數無法確定確定象限中的角度僅按其切線值下降(僅atan)。如果需要確定象限,則可以使用atan2。


查看完整回答
反對 回復 2019-12-16
  • 4 回答
  • 0 關注
  • 1972 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號