2015-02-08 86 views
2

arcus cotangent(arccot)如何快速實現? 哪個庫是必要的導入,我使用達爾文,但我不能看到它時試圖打電話?Arcus在Swift中的實施

+2

那麼你真的想** **實現它?看起來你想要的是使用計算arcus餘切的內置/庫函數。你可以通過調用C庫函數'atan'來達到你想要找到arcus cotangent的角度的倒數。 – 2015-02-08 12:51:13

+0

只是[你有什麼嘗試?](http://whathaveyoutried.com) – 2015-02-08 13:02:51

回答

5

<math.h>所有的數學函數在斯威夫特都可以,如果你

import Darwin 

(如果導入基金會或UIKit中被自動導入)。

現在反餘切函數不是這些,但你可以從atan()使用的關係很容易地計算(見例如Inverse trigonometric functions):

arccot(x) = arctan(1/x)  (for x > 0) 
arccot(x) = π + arctan(1/x) (for x < 0) 

arccot(x) = π/2 - atan(x) 

第2個公式在數值上更適合 (絕對)值的x ,最後一個是值較好, 所以你可以定義你acot()功能

func acot(x : Double) -> Double { 
    if x > 1.0 { 
     return atan(1.0/x) 
    } else if x < -1.0 { 
     return M_PI + atan(1.0/x) 
    } else { 
     return M_PI_2 - atan(x) 
    } 
} 

對於夫特3通過Double.pi替換M_PI

+0

感謝@Martin R的詳細解答。我也嘗試過這一點,但因爲我是iOS新手,我以爲有一個庫默認具有這個三角函數,因爲它與sin,cos,tan,atan等一樣 – mrBallista 2015-02-08 17:14:59

0

在斯威夫特4(iOS版11時,Xcode 9)

放置import UIKit後,你可以寫這樣的:

let fi = atan(y/x) 

其中X和類型CGFloat的的Y(在我的情況)。

或者,你可以根據需要使用他人:

let abc = acos(y) 

數學函數參數類型的工作:雙,浮法,CGFloat的等