![見出し画像](https://assets.st-note.com/production/uploads/images/77296431/rectangle_large_type_2_e194a493ae944ccf1d4450fceb1b1739.png?width=800)
Photo by
kaikazayama
[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ずつ増加し、それによって円周上の点が移動しているように見せかけている。
実装した結果
![](https://assets.st-note.com/img/1651029565896-5n9108cG35.png?width=800)
毎秒増えていきます。
検算はまだ出来ていませんが、ご参考までに!
この記事が気に入ったらサポートをしてみませんか?