MMF2/CF25で三角関数などを扱う場合:注意点、角度 ( Degree ) とラジアン ( Radian )について


MMF および CF25 の数学関数の仕様について。

ウェブ上で数学を解説するサイトはあまた在りますが、基本的にコンピュータ上で三角関数などを扱う場合、角度をラジアン( radian )という単位で扱うのが一般的、特に開発言語などで数学を扱う場合にはラジアン前提での解説が多い。

例えば C 言語で三角関数を使うためには math.h をインクルードするのですが、これで提供される数学関数群ではラジアン ( radian ) を用いて計算を行い、あるいはラジアンで値を返しています。

そしてラジアン ( radian ) を度 ( degree ) に変換するため例えば
「 sin(x) 」
で求められた結果に
「 * 180 / 3.14 」
というラジアンを度に変換するためのロジックが付け加えられた
「 sin(x)  * 180 / 3.14 」
この解説が一般的。

しかし MMF および CF25 にはこの手法が通用しません。

なぜなのか?

コンピュータ上では数学=ラジアンを用いるのが一般的

コンピュータ上の開発言語では数学=ラジアンを用いるのが一般的なのですが、計算機(関数電卓)などでは度 ( degree ) をデフォルトにして扱っています。

例えば Windows 7 の関数電卓などでも確認できますが、標準で度 ( degree ) を使った計算 ( Degree モード) をしてます。角度を表す場合、汎用で使われているのが度数法であり、計算機(電卓)とかはまず Degree (度) モードが標準になってるみたい。

calculator左下がウィンドウズ、右上が Ubuntu の Calculator

度数法と弧度法について

角度 (平面角) を扱う概念としては度数法 (小学生くらいまでに習う) 以外に、数学的な裏づけで角度を測る「弧度法」があって、「弧度法」は日本だとたぶん高校数学から習う。

弧度法は微分のために作られた概念で、角度を弧 () と半径の長さ比率で扱うため単位は無次元(無次元数)となります。

ここまで、意味がわからない場合は「ふ〜ん」でハナクソほじりながら読んでくれて良いです。CF25 で数学関数を扱う場合重要なのは以下。

度数法は円周を 360 等分したものを 1 とする単位、弧度法におけるラジアンは長さ比率、それぞれ単位が異なり、またこれらは計算によって相互変換できます。

ラジアンから度へ変換する計算
度(Degree) = ラジアン(Radian) x 180 / 円周率(Pi)

度からラジアンへ変換する計算
ラジアン(Radian) = 度(Degree) x 円周率(Pi) / 180

CF25 では三角関数として Sin, Cos, Tan 以外に ASin, ACos, ATan, ATan2 などがサポートされているけれど、ここで注意点は単位がラジアン ( Radian ) ではなく角度 ( Degree ) が用いられている点。

cf25_mathサポートされている三角関数群
sincos_resultssin(1)の結果が 0.017452406 になっている点に注意

なぜこうなっているのか?

不明です…が、たぶん初心者向きに気を利かせてくれた結果だと思われ、度への変換が不要になっている点に注意してください。以下の画像の計算結果はウィンドウズ付属の電卓を関数電卓モードにして、標準の Degree モードで計算した結果です。

windows7_calcMMF/CF25のエクスプレッション結果と同じになる関数電卓の Degree モードで計算した結果

CF25 を使って計算結果をチェックしていけばいずれ気がつくと思いますが、atan2 なども CF25 はラジアンではなく度数で返しています。理屈さえ分かっていればこれも便利なのですが、まず前提としての知識が無いとここでハマることになるのです。

あるいは「 CF25 の電卓(エクスプレッションエディタ)は角度計算が Degree (度)モードなのだ」と覚えてください。そして一般的な開発言語では Radian (ラジアン) モードを前提とした解説がされているということ。

長くなったので一度記事を切って続く→続き


Leave a comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です