本文所讲的累积变换矩阵(注:并非几何书上的术语),是指在原有变换矩阵的基础上,乘以一个额外的变换矩阵而得到的新的变换矩阵。
当对图形利用几何变换及其逆变换的时候,特别是利用System.Windows.Media.Matrix矩阵类或第三方类似规格的矩阵类(Matrix2)进行坐标转换的时候,特别需要注意的是:
如果当给已有的一对正、逆变换矩阵(A, AI)额外增加一个额外变换的时候,假设额外变换矩阵分别为(B,BI),,则叠加后的变换矩阵为:(A*B,BI*AI),而不是(A*B,AI*BI)。当然,可以直接先计算A*B,然后计算其逆矩阵,来避免可能导致的错误,但这种计算量比较大的时候,需要考虑两种计算方式的效率而择优选取。
注:
(1)上文中,BI是B的逆矩阵,AI是A的逆矩阵。
(2)叠加后的矩阵对不可以为(A*B,AI*BI),因为AI*BI并不是A*B的逆矩阵。
(3)可以发现,A*B*BI*AI=Identity单位矩阵,因此A*B的结果与BI*AI的结果互为可逆矩阵。
(4)以上公式是几何图形处理中非常重要的公示,比如,从屏幕坐标转换为自定义空间中的坐标,然后经过有关处理后,在从自定义空间中转换成屏幕坐标。
(5)上式针对二维空间中采用System.Windows.Media.Matrix矩阵类或第三方类似规格的矩阵类(Matrix2)的情况,其特点是转换矩阵写在坐标矢量的后面,即 Point*TransformMatrix的书写习惯。而对于将转换矩阵写在坐标矢量前面的情况,即TransfromMatrix*Point或TransformMatrix*Vector,(注:3维空间中的坐标转换常常使用这种方式),则需要注意矩阵相乘的顺序。