非常简单.因为一个旋转矩阵不管如何旋转其x y z旋转分量的模总是1
那么只要求旋转分量的模
如果模不唯一, 那么那个摸的值就是相应scale向量分量的值.
VECTOR3 scale;
MATRIX33 mat;(3x3矩阵, 是4x4矩阵旋转部分)
假设行向量格式
scale.x = VECTOR3(mat(0,0) , mat(1,0), mat(2,0)).Length();
scale.y = VECTOR3(mat(0,1) , mat(1,1), mat(2,1)).Length();
scale.z = VECTOR3(mat(0,2) , mat(1,2), mat(2,2)).Length();
如果是列向量, 就将mat转置.
如果要求旋转, 那么只要求mat 乘以scale矩阵的逆
旋转矩阵正交单位化