3.0座標は、x軸とy軸が垂直に交わる直交座標で表されることが多いです。三角関数を用いて、レーダーのように、距離と角度(方向)で位置を示すこともできます。座標を位置ベクトルとして扱うことも考えられます。本稿では、同じお題を3つの手法で構成してみます。作成するのは、マウスポインタをイーズアウトしながら追いかけるMovieClipインスタンスのアニメーションです。座標から位置を計算するもっともシンプルなのは、xy座標を使って移動先の位置を計算することです。マウスポインタの座標は、DisplayObject.mouseXおよびDisplayObject.mouseYプロパティで調べることができます。これらのプロパティ値をそれぞれインスタンスのDisplayObject.xとDisplayObject.yプロパティに加算すると、インスタンスがマウスポインタと一緒に動きます[*1]。その加算値に減速の比率を乗じることによって、イーズアウトのアニメーションが表現できます(スクリプト001)[*2]。3.0で始めるオブジェクト指向スクリプティング」第9回「座標の天動説と地動説」をお読みください。3.0で始めるオブジェクト指向スクリプティング」第9回「プロパティのイージング」をご参照ください。sinθ)で表されます(図002)[*3]。sinθ)2点間の距離は、三平方の定理を使って求められます。これは直角三角形の斜辺の2乗は、他の2辺の2乗の和に等しいという関係です。y2)とすると、三平方の定理より2点間の距離lはつぎのように導かれます(図003)。平方根を計算するのは、Math.sqrt()メソッドです。座標からラジアン値の角度を得るには、Math.atan2()メソッドを用います[*4]。マウスポインタまでの距離と角度を求め、移動先の座標を三角関数で指定したのが、つぎのスクリプト002です。nDeceleration;}前記スクリプト001と比べてステートメント数は増えていますし、このアニメーションについていえば三角関数で処理することによってとくに有利な点もありません。ゲームで砲台から砲弾を発射するとか、飛行機を操縦するといった場合には、スビード(フレーム当たりの移動距離)と方向(角度)でインスタンスをコントロールすることが考えられます。そのときの処理は、このスクリプト002の考え方で対応できるのです。TechNote「角度と座標の計算」をお読みください。このTechNoteに挿入されている図には、下図004のとおり座標の表記に誤りがあります。ラジアンとMath.atan2()メソッドについては、前出注[*3]のTechNoteをご参照ください。ベクトルと極座標を使う2次元平面のxy座標は、Pointクラスで扱うことができます。Pointクラスでは、位置座標をベクトルと捉えて、ベクトルの演算ができます。前掲スクリプト001の考え方でPointクラスを使うと、以下のスクリプト003のようになります。Pointインスタンスは、new演算子でコンストラクタメソッドPoint()を呼出し、引数にはxy座標を指定します。Pointインスタンスのベクトルとしての長さを変えるのが、Point.normalize()メソッドです。引数には、長さを数値で指定します。Pointインスタンスの長さは、Point.lengthプロパティで調べられます。現行の長さに減速率を掛けて、イーズアウトした移動位置を算出している訳です。して得られたPointインスタンスのxy座標を、MovieClipインスタンスのxy座標にそれぞれ加算しています。myPoint.y;}Pointクラスでも前掲スクリプト002のように、距離と角度で座標を扱うことができます。coordinates)といいます。PointクラスにはPoint.polar()メソッドがあり、引数に距離とラジアン値の角度を渡してPointインスタンスが生成できます。つぎのスクリプト004は、Math.atan2()メソッドによりマウスポインタ座標の角度を計算し、Point.polar()メソッドでマウスポインタまでの距離に減速率が乗じられた位置を算出しています。newPoint.y;}イーズアウトのアニメーションは、インスタンスを現在位置と目標位置の間に移動することで表現します。2点を結ぶ線分の中間の座標は、Point.interpolate()メソッドで求めることができます。引数には2点の座標を指定するふたつのPointインスタンスと、ふたつ目のPointインスタンスからの比率を渡します(図005)。図005■2点の座標を補完するPoint.interpolate()メソッドPoint.interpolate()メソッドにより、マウスポインタの座標とインスタンスの座標の中間座標を求めたのが、以下のスクリプト005です。インスタンスの座標も計算対象とするため、親タイムラインから見た座標値で処理しています。インスタンスの座標からマウスポインタの座標に向かって、減速率の比率の中間座標にインスタンスを移動すれば、イーズアウトのアニメーションになります。newPoint.y;}Pointクラスには、以上見てきたように、座標の計算をするためのさまざまなプロパティやメソッドが備わっています。座標の演算が多い処理には、Pointクラスを使うと便利な場合があるでしょう。