●解説
角度を表すには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定数で取得できます。
※ラジアンと度数の換算式を求める比例計算
同じ角度を「度数」と「ラジアン」で表したとき、つぎの比例式が成立ちます。
そこで、両辺に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日