万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

第30回FlashOOP勉強会

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角形ごとに塗りつぶす。