首页 > 代码库 > ActionScript3游戏中的图像编程(连载六十四)
ActionScript3游戏中的图像编程(连载六十四)
4.1.7 资源调度行为的撤销——逆矩阵
矩阵的加法有对应的减法,实数的乘法也有对应的除法,但数学家们发现,矩阵的除法很难定义。但是,加与减,乘与除都有一个共同点,它们互为逆运算,两种运算叠加后会相互抵消,就好比没有运算过一样。所以,虽没有除法的定义,但数学家们提出了具有逆运算功能的另一个概念——逆矩阵。
对逆矩阵的定义如下:两个矩阵A和B,如果满足行数与列数相等,并且A*B=B*A=单位矩阵,那么我们就称A是B互逆,B是A的逆矩阵。
逆矩阵同样有着它的实际意义,假设30%的士兵从第1连调到第2连之后不久便发现第2连的后方支援即将抵达,可以将被调度的士兵带回到第1连,则此时需要执行一个逆矩阵B的运算,使得下列等式成立:
可以看到,原始矩阵【T1,T2,T3】经过两次运算以后结果仍为【T1,T2,T3】,即等同于乘以了一个单位矩阵,所以可得出如下结论:
把B矩阵的具体形式写出来,得到:
对左侧进行运算,结果将会相当的长,为了简便起见,我将矩阵化简为2*2的尺寸,因为在这个调度过程中第3连的士兵没有发生任何改动:
根据上面的矩阵运算,我们可以得出以下方程组:
这是一个包含4个未知数的方程组,它有唯一解
所以,求得的逆矩阵为
拿它和单位矩阵作比较,可以发现这一矩阵相当于第1连从第2连拿回3/7的士兵。
用矩阵求解这一问题未免有点小题大做,但从这一小实例中,我们见证了逆矩阵回天得术之奇迹。
求解逆矩阵的方法有很多,我就不一一列举了。有兴趣的读者可以自己找本线性代数的教材慢慢研究。
逆矩阵在图形变换领域中也起到举足轻重的作用,主要用于变换行为的撤销,矩阵的对比等等。
正因为矩阵变换的思想(尤其是矩阵的乘法与逆矩阵)充分调动了人类的主观能动性,体现了布阵的策略与战术,实现了资源的优化配置,所以,在艺术编程领域,矩阵数学也同样备受青睐,下面就让我们一同领略ActionScript矩阵的风采吧。
ActionScript3游戏中的图像编程(连载六十四)