http://www.flashoop.jp/2008/11/30_1.html
『ActionScript 3.0プロフェッショナルガイド』の執筆者野中さん。
数学の本ではない。
Matrix行列変換
解説は逃げない。
ActionScript3.0からイベントをやりとりできるようになった。
ベクトルは行列を拡張したもの。
■数学的なベクトルと行列からMatrix/Matrix3Dクラスを理解する
ベクトル・・・大きさと方向を持つもの。
・ベクトル
絶対値(大きさ)
三平方の定理。
スカラー倍・・・・kA=(kAx,kAy)
足し算
引き算
A・B=|A||B|cosθ
=AxBx+AyBy
cosθは0
・行列
足し算
引き算
スカラー倍
→ベクトルと考え方は同じ
ベクトルをさらにベクトルにしたようなもの。
配列の配列
・行列の乗算
縦に書いたものは列ベクトル
2列=2行 でないと計算できない。
交換法則は成立たない
機械的にできる、つまりコンピュータに任せられる
カラーやぼかし、エンボスなどに使う。
2行2列と2行2列なら、2行2列になる。
内積を作っている。
交換法律は成立たない。
・座標の変換
単位行列・・・対角の要素が1,他は0
・座標の変換
座標は原点を中心に回転する。
■CS3、カラー効果
RGB
オフセットは加算でやる。
※パースがかからない
・台形に変化出来ない。平行四辺形にしか変化しない。
・同じ三角形が2つのみ。
・Flash8やFlash9ではできない。Flash10から。
■変換行列ーMatrix3Dクラス
・Matrix3D
4×4の正方行列
・Vector3D
順番が変わると答えが変わってしまうこと。
・前掛け(prepend):
prependRotation() 回転
prependScale() 拡大。縮小
prependTranslation() 平行動移
・後掛け(append):
appendRotation() 回転
appendScale() 拡大。縮小
appendTranslation() 平行動移
0のフレームの時点で単位行列がセットされてしまう。
必要なインスタンスだけに0をセットする。
appendRotation
その場で回転するには、一度親の座標に移動して回転して戻す。
単位行列は何も変化しない。
prependは変化を加えておいてから、最後に設定する。
デメリットは、デフォルト(単位行列)を設定しなければならない。
リセットされてしまう。
細かい設定をするには、元の角度に影響が及ばないappenndがよい。
リセットされてもよい場合は、楽に設定できるprepend。
■質疑応答
Matrix3Dはネイティブでやってるので、通常より速い。
papervisionは内部的な物を変えてるかも知れないので速いかも知れない。
z座標を持たせることにやって3次元も出来るようになる。
次回はMAX後、2月あたり?
■Vector
Flash10から入ってきたクラス。
配列のエレメントを型指定したもの。
Numberにintを入れると怒られる。
Objectも入らない。厳密。
3角形ごとに塗りつぶす。