关于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);不过好在这一点比起前面一点来说并不那么重要