見出し画像

[Swift]Swiftで三角関数を作る


三角関数とは?

詳しくは以下の記事を参照してください。
https://freeofficehp.wordpress.com/2012/11/09/%E9%96%8B%E7%99%BA%E3%83%A1%E3%83%A2%EF%BC%9A%E5%86%86%E5%91%A8%E4%B8%8A%E3%81%AE%E7%82%B9/

Swiftで三角関数を表現するには?

Swiftには三角関数のライブラリが標準で搭載されています。
Swiftでは以下のような記述方法で、三角関数を表現することができます。

let angle = 30.0 //Θの角度を決める

sin(angle) //sinΘ
cos(angle) //cosΘ
tan(angle) //tanΘ

実装したいプログラム

半径が30の円CのΘ0~360°における円周上の点の座標はいくらか。 
円Cの原点は(100,100)とする。
また、Θは毎秒1°ずつ増やしていくものとし、最初はΘ=30°からはじめるものとする。

実装したコード

class ClockViewController: UIViewController {
    
    @IBOutlet var textLabel: UILabel!
    @IBOutlet var textLabel2: UILabel!
    
    var origin_x = 100
    var origin_y = 100

    var angle = 30.0
    var radian = 30.0

    override func viewDidLoad() {
        Timer.scheduledTimer(timeInterval: 1,
                               target: self,
                               selector: #selector(ClockViewController.timerFunction),
                               userInfo: nil,
                               repeats: true)
    }
    
    @objc func timerFunction(){
        var moved_x = Int(cos(angle) * radian) + origin_x
        var moved_y = Int(sin(angle) * radian) + origin_y
        textLabel.text = String(moved_x)
        textLabel2.text = String(moved_y)
        
        angle += 1.0
    }
}


簡単な解説

・円周上の点の座標は x = cos(angle)*radian + 原点のX、y = sin(angle)*radian + 原点のYで表現できる。
・Timerメソッドを用いて、毎秒angleが1ずつ増加し、それによって円周上の点が移動しているように見せかけている。

実装した結果

上の数字がcos(angle), 下がsin(angle)

毎秒増えていきます。

検算はまだ出来ていませんが、ご参考までに!


この記事が気に入ったらサポートをしてみませんか?