2017年2月15日水曜日

円周上の座標を求める

単に円を描くならUIBezierPath()を使ったovalメソッドを使うのが簡単なのだが、円周上の座標を求めて処理をしたい場合には、sin、cosを使った計算が必要になる。

半径:r
角度:θ
の場合、

X座標は r*cosθ
Y座標は r*sinθ
で求められる。

角度θはプログラミング言語上ではラジアン角で指定する必要があるので、その変換を含めて実際のコードは以下のようになる。
(degreeには度数を、rには半径を入れておく)

let θ = M_PI / Double(180) * Double(degree)
let x = Double(r) * cos(θ)
let y = Double(r) * sin(θ)

ラジアン角とは?

ラジアン角:円の半径に等しい長さの弧の中心に対する角度(半径と同じ長さだけ円周を描いた時の角度が1ラジアン)

円周率はπなので、360度は直径*πだから、1ラジアンの2倍*円周率ということで、
360度 = 2πラジアン ということになる。

めんどくさいんだけど、数学的にはこっちの方が自然で、式が簡単に書けるんだって。まあその辺りのところは別に勉強するとして。

度数とラジアンの変換は、

360 = 2π だから、
ラジアン角 = 2π / 360 * 度数 であるので、簡単にして、
ラジアン角 = π / 180 * 度数 ということになるわけだ。

0 件のコメント:

コメントを投稿