将一个仿射变换矩阵Ma解析为Ms×Mr×Mt,式中Ms为缩放矩阵,Mr为旋转矩阵,Mt为平移矩阵。仿射矩阵不应包含错切成分。具体操作可分为一下几步。 1.平移矩阵的获取 Ms×Mr×Mt的过程中,位于Ma41,Ma42,Ma43的平移因子不会改变,故: 1 0 0 0 Mt = 0 1 0 0 0 0 1 0 Ma41 Ma42 Ma43 1 2.放缩矩阵的提取 令Ma = Ma×Mt^-1,则Ma = Ms×Mr Mrx×Mry,相当于对Mrx的每个行向量绕x轴旋转Mry所代表的角度,并由得到的三个新行向量组成新的结果矩阵,Mrx为向量绕x轴旋转的变换矩阵,其每行向量的分量的平方和为1,故行向量模为1,该行向量乘以旋转矩阵Mry后长度不变,即模为1,故Mrx×Mry的结果矩阵的每一行(行向量)分量的平方和为1. 将上述情况扩展,一个Mr可表示为Mry×Mrx×Mrz×Mrx^-1×Mry^-1,或其它表示形式,但各种表示形式都最终可表示为Mrx,Mry,Mrz及其逆矩阵的乘积。根据上面的分析,Mr各行向量分量的平方和必为1。 又因为Ms为对角矩阵,Ms×Mr的形式如下 b11 0 0 0 a11 a12 a13 0 0 b22 0 0 × a21 a22 a23 0 0 0 b33 0 a31 a32 a33 0 0 0 0 1 0 0 0 1 Ms Mr 计算上式,并根据Mr行向量分量的平方和为1,可得: b11 = Ma11^2 + Ma12^2 + Ma13^2 + Ma14^2; b22 = Ma21^2 + Ma22^2 + Ma23^2 + Ma24^2; b33 = Ma21^2 + Ma22^2 + Ma23^2 + Ma24^2; 至此,Ms求得。 3.旋转矩阵的获取 在上述计算中Ma的值变为Ms × Mr。 先求Ms^-1,则Mr = Ms^-1 × Ma = Ms^-1 × Ms × Mr; |