關於3x4(實際的4x4)矩陣的個人解說:
矩陣如下:
n11 n12 n13 n14
n21 n22 n23 n24
n31 n32 n33 n34
u v w j
其中 u v w j是本人加上去的,具體類似AS3中的2d矩陣最後以行,其實可以忽略
產生平移 旋轉 傾斜或剪下 的作用陣列:
n11 n12 n13
n21 n22 n23
n31 n32 n33
座標整列
n14
n24
n34
一般情況下可以定義3x4實際上應該當作4x4齊次陣列預設定義如下
n11 n12 n13 n14
n21 n22 n23 n24
n31 n32 n33 n34
0 0 0 1
平移時陣列表現:
1 0 0 n14
0 1 0 n24
0 0 1 n34
0 0 0 1
可以看出當對角線為1 最後一列前三行僅有值時作平移運動
縮放時陣列表現:
s1 0 0 0
0 s2 0 0
0 0 s3 0
0 0 0 1
s1對應x軸方向的縮放
s2對應y軸方向的縮放
s3對應z軸方向的縮放
一般應用於一同變換 可參考AS3 的matrix矩陣的scale方法,與之類似
旋轉時陣列請看繼續下一段回複
關於旋轉
聲明:
rad為將旋轉的角度
var c :Number = Math.cos( rad );
即餘弦值
var s :Number = Math.sin( rad );
即正弦值
繞x軸旋轉整列狀態
1 0 0 0
0 c -s 0
0 s c 0
0 0 0 1
繞y軸旋轉整列狀態
c 0 s 0
0 1 0 0
-s 0 c 0
0 0 0 1
繞z軸旋轉整列狀態
c -s 0 0
s c 0 0
0 0 1 0
0 0 0 1
由於存在3軸故
可以分為
rotationX
rotationY
rotationZ
值得注意的是在此矩陣x y z 變換時候不需要考慮y軸方向
而轉換到 flash x y 時就需要定義y的方向或者考慮y的方向
因為在舞台中y是向下的
另外要考慮的是我們現在一般都採用(0,0)左上對其方式,這也需要被自訂
或者去考慮是否要讓他們像我們數學環境下考慮的中心(0,0);不過好在這一點比起前面一點來說並不那麼重要