サイトトップ

Director Flash 書籍 業務内容 プロフィール

Flash ActionScript 3.0 Reference

◎01 Mathクラス

☆01 ★ラジアンと度数を変換したい

解説
角度を表すには1周を360度とする度数法のほかに、ラジアンを単位とする弧度法があります。ActionScriptでは、たとえばインスタンスの角度(DisplayObject.rotationプロパティの値)は度数で指定します。ところが、Mathクラスの三角関数(Math.sin()/Math.cos()/Math.tan()など)を使うときは、角度をラジアンで渡さなければなりません。そこで、これらふたつの単位の間で、角度を換算したい場合が生じます。その計算には、Math.PI定数を使います。

Mathクラス
パッケージ トップレベル
継承 Math→Object
PI定数 ASタイプ C
ランタイムバージョン AIR 1.0/Flash Player 9
文法 Math.PI:Number = 3.141592653589793
意味 円周率πの近似値
定数値 3.141592653589793

度数法は1周の角度を360度で表します。それに対して弧度法では、半径1の円(「単位円」といいます)の弧の長さで角度を示します(図01-01-001)。つまり、360度 = 2πラジアンです。

図01-01-001■ラジアンは単位円の弧の長さで角度を示す【FigMath03-006.png】

ラジアンと度数の間の換算式は、簡単な比例計算でつぎのように求められます。このπの値が、Math.PI定数で取得できます。

度数 = ラジアン×(180/π)

ラジアン = 度数×(π/180)

※ラジアンと度数の換算式を求める比例計算
同じ角度を「度数」と「ラジアン」で表したとき、つぎの比例式が成立ちます。

度数/360 = ラジアン/2π

そこで、両辺に360を掛けて通分すれば、以下のようにラジアンを度数に変換する式が導かれます。両辺に2πを掛ければ、同様に度数からラジアンの換算式が求められます。

度数 = ラジアン×360/2π = ラジアン×(180/π)

記述例
以下のスクリプト01-01-001は、π/2ラジアンつまりMath.PI/2を度数に換算し、インスタンスmy_mcのDisplayObject.rotationプロパティに設定して、90度回転します。そのうえで、設定した値が90度であることを、[出力]パネルに表示して確かめています(図01-01-002)。

スクリプト01-01-001■π/2ラジアンを度数(90度)に変換してインスタンスの角度に設定

// フレームアクション
var nRadianToDegree:Number = 180 / Math.PI;
var nDegree:Number = Math.PI / 2 * nRadianToDegree;
my_mc.rotation = nDegree;
trace(nDegree);

図01-01-002■インスタンスの角度にラジアン値から換算した度数値を設定【01_01_Math_PI_001.png】

上記スクリプト01-01-001では、180/πの値を毎回計算する必要がないように、この換算比率を予め変数(nRadianToDegree)に設定しています。こうしておくと、度数値をラジアン値に換算したいときも、今度は変数値を割り算すれば求められます。たとえば、つぎのスクリプトは、90度のラジアンへの換算値とそれがπ/2に等しいことを確かめています。

var nRadian:Number = 90 / nRadianToDegree;
trace(nRadian, nRadian == Math.PI / 2);
// 出力: 1.5707963267948966 true

※換算比率を定数に入れる
180/π(あるいは逆数のπ/180)を使い回す場合には、値をつぎのように定数(const)として宣言するとよいでしょう。カスタムクラスで用いるときは、静的(static)な定数にすると便利です。

const RADIAN_TO_DEGREE:Number = 180 / Math.PI;

作成者: 野中文雄
ドラフト作成: 2009年4月7日


Copyright © 2001-2009 Fumio Nonaka.  All rights reserved.