前回の記事では,マトリクスを使用すると,インスタンスの位置や変形の情報を,スナップショットのようにして保管し,利用できる,ということを紹介しました。
マトリクス情報を扱うMatrixクラスのインスタンスは,複数のマトリクスを合成して利用することもできます。図1のムービーでは,画面上に二つある星をドラッグして位置を移動したり,拡大/縮小を行うと,そのマトリクス情報を組み合わせてアニメーションを作成します。
![]() |
図1●マトリクスを使ったアニメーション。位置・角度・拡大率を変えられます [クリックすると別ウィンドウでムービーを表示します] |
Matrixクラスの“正体”
画面上に表示されているインスタンスを移動・変形させるために,マトリクスを使用する方法を復習しておきましょう。ステージ上にインスタンス「star」があるとします(図2)。
![]() |
図2●インスタンスの準備 |
このインスタンスの位置や変形の情報は,
|
で取得できます。
マトリクス情報を使って,starの移動・変形を行いたい時は,インスタンスのtransform.matrixプロパティ(*1)に,マトリクス情報を管理するクラスである「Matrixクラス」のインスタンスを代入します。
|
ここまでは,前回ご紹介しましたね。では,このMatrixクラスとは具体的にどんなクラスなのでしょう?
端的に言うと,「位置と変形の情報のみを独立して管理できるクラス」です。単に座標や角度の情報を「保持している」だけではなく,位置や情報の情報を「更新する」ための便利なメソッド群も用意されています。
Matrixクラスでは,位置と変形情報を扱うために,行列を利用しています。ヘルプによると,Matrixクラスは,「Matrix クラスは,二つの座標空間の間におけるポイントのマッピング方法を決定する変換マトリックス (変換行列) を表します」との説明があります。さらに,「変換行列オブジェクトは,次の内容を備えた 3 × 3 の行列です」との説明が続きます。
この3×3の行列は,図3のようなものです。
![]() |
図3●3×3の変換マトリクス (3×3の行列のうち,1番下の行の三つの値は,「0」「0」「1」で固定です。これは,Matrixクラスが,2次元空間のみを対象として扱うクラスとして,作成されているためです) |
関連する変形 | 値 | 説明 |
---|---|---|
拡大/縮小 | a | x軸方向のピクセルの位置への影響の度合い |
d | y軸方向のピクセルの位置への影響の度合い | |
回転/傾斜 | b | x軸方向のピクセルの位置への影響の度合い |
c | y軸方向のピクセルの位置への影響の度合い | |
水平移動 | tx | x軸方向に移動する距離 |
ty | y軸方向に移動する距離 |
なぜ,行列の形で管理しているのかというと,位置や変形の情報同士を,足したり,掛けあわせたりといった合成をする際に,行列の計算を利用するのが便利だからです。2D,あるいは3Dのグラフィックス処理について学習されている方なら,この説明だけでピンと来るのではないかと思います。