2015/03/30

【C#】三角関数(sin, cos, tan)を使う

photo by Daniel Kulinski

某サイトでプログラミング学習をしていたとき、業務ではほぼ使わないであろう三角関数に引っかかった。
結論から言うと、MathクラスにSin, Cos, Tanというメソッドを持っているので、それを使えばよい。


三角関数を使う


使い方は、以下の通り。

using System;

// 角度が30°の場合
var angle = 30;
var sin = Math.Sin(angle * (Math.PI / 180));
var cos = Math.Cos(angle * (Math.PI / 180));
var tan = Math.Tan(angle * (Math.PI / 180));

//"Sin:0.5, Cos:0.87, Tan:0.58"  ※少数第二位で四捨五入
Console.WriteLine("Sin:{0}, Cos:{1}, Tan:{2}", sin, cos, tan);

パッと見、「Math.PI / 180」が気になると思う。
理由は、Sin, Cos, Tanメソッドの引数の角度は、"ラジアン"で示す必要があるためだ。


なぜ、Math.PI / 180 が必要なのか?


普段使う「30°」という表記は、度数法によるもの。
ラジアンとは、角度(平面角)の単位で弧度法によって求められる。


1ラジアンとは?


半径と弧の長さが一致するときの角度を「1ラジアン」と呼ぶ。(度数法では57.3°くらい)


角度が360°だったら?


「直径 × 円周率 = 円周」から、円周は「2πr」となり、角度が「2πrラジアン」となる。


角度が180°だったら?


360°の時の円周が2πr、角度がその半分のなので円周も半分の「πr」となり、角度が「πrラジアン」となる。


角度が90°だったら?


180°の時の円周がπr、角度がその半分なの円周も半分の「1/2 πr」となり、角度が「1/2 πrラジアン」となる。


角度がθだったら?


角度がθの場合、円周は「θ/180 πr」となり、角度が「θ/180 πrラジアン」となる。


半径rを1とすると、角度は「θ/180 π」となる。

だから度数法で求めた角度をラジアンにするには、「θ * (Math.PI / 180)」のように「Math.PI / 180」を乗算する必要がある。


以上

written by @bc_rikko

0 件のコメント :

コメントを投稿