ActionScript2.0で三角関数を利用するメモ。
FlashのステージはY座標が下向きに正の値をとる。そのため角度は時計回りが正となる。
角度は度数で表す場合と弧度(ラジアン)表す場合がある。本記事では度数を変数Θ,弧度をθで表す。
ActionScriptで三角関数を扱うには次のようなメソッドある。
三角関数 逆関数 正弦 Math.sin Math.asin 余弦 Math.cos Math.acos 正接 Math.tan Math.atan Math.atan2
直行座標の円の点(x,y)は角度θ(弧度),半径r,中心(x0,y0)が与えられると下記のように表すことができる(このような座標の表示を極座標表示や媒介変数表示と言う)。
x = r·cosθ + x0 y = r·sinθ + y0
radian(弧度),degree(角度),radius(半径),中心(x0,y0)とするとActionScriptでは次のようになる。
var radian = Math.PI/180*degree;
var x = r*Math.cos(radian)+x0;
var y = r*Math.sin(radian)+y0;
度数から弧度への変換は度数 ⇔ 弧度 : ActionScript
円については円 : 数学
[x']=[ cosθ -sinθ][x] [y']=[ sinθ cosθ][y]
直行座標の楕円の点(x,y)は角度θ(弧度),長軸a,短軸b,中心(x0,y0)が与えられると下記のように表すことができる。
x = a·cosθ + x0 y = b·sinθ + y0 ※a>b
radian(弧度),degree(角度),a(長軸),b(短軸),中心(x0,y0)とするとActionScriptでは次のようになる。
var radian = Math.PI/180*degree;
var x = a*Math.cos(radian)+x0;
var y = b*Math.sin(radian)+y0;
2次元の速度が速さ(speed),方向(角度:Θ)で与えられたとき、三角関数を使いX方向の速さ、Y方向の速さに分解することができます。
x = speed·cosΘ y = speed·sinΘ
radian(弧度),degree(角度),speed(速さ)とするとActionScriptでは次のようになる。
var radian = Math.PI/180*degree;
var vX = speed*Math.cos(radian);
var vY = speed*Math.sin(radian);
逆にX方向の速さvX,Y軸方向の速さvYが与えられると、速度(速さspeed,方向degree)を求めることができます。
θ = Math.atan2(vY,vX);
degree = 180/Math.PI*θ
speed = Math.sqrt(vX*vX + vY*vY);
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。