此次我们要讨论向量的旋转问题,包括平面绕点旋转和空间绕轴旋转两部分。对于游戏程序员来说,有了向量的旋转,就代表有了操纵游戏中物体旋转的钥匙,而不论它是一个平面精灵还是一组空间的网格体亦或是我们放在3-D世界某一点的相机。我们仍需借助向量来完成我们此次的旅程,但这还不够,我们还需要一个朋友,就是矩阵,一个我们用来对向量进行线性变换的GooL GuY.
一、矩阵的基本运算及其性质
对于3x3矩阵(也叫3x3方阵,行列数相等的矩阵也叫方阵)m和M,有
1、矩阵加减法
m +(-) M =
[a b c] [A B C] [a+(-)A b+(-)B c+(-)C]
[d e f] +(-) [D E F] = [d+(-)D e+(-)E f+(-)F]
[g h i] [G H I] [g+(-)G h+(-)H i+(-)I]
性质:
1)结合律 m + (M + N) = (m + M) + N
2) 交换律 m + M = M + m
2、数量乘矩阵
k x M =
[A B C] [kxA kxB kxC]
k x [D E F] = [kxD kxE kxF]
[G H I] [kxG kxH kxI]
性质:
k和l为常数
1) (k + l) x M = k x M + l x M
2) k x (m + M) = k x m + k x M
3) k x (l x M) = (k x l) x M
4) 1 x M = M
5) k x (m x M) = (k x m) x M = m x (k x M)
3、矩阵乘法
m x M =
[a b c] [A B C} [axA+bxD+cxG axB+bxE+cxH axC+bxF+cxI]
[d e f] x [D E F] = [dxA+exD+fxG dxB+exE+fxH dxC+exF+fxI]
[g h i] [G H I] [gxA+hxD+ixG gxB+hxE+ixH gxC+hxF+ixI]
可以看出,矩阵相乘可以进行的条件是第一个矩阵的列数等于第二个矩阵的行数。