transform = TRS
T就是transform的最后一列。关于R和S的分解,PBRT给了一个公式:M_(i+1) = (M_i + ((M_i)^T)^(-1))*0.5,直到M收敛。M初始状态为transform左上角的3*3的矩阵。
M收敛后得到的矩阵为R,从而可以解出S.代码大概是这样:
void decompose(Vec3<float>& T, Mat33<float> &R, Vec3<float>& S) { T[0] = m[0][3], T[1] = m[
transform = TRS
T就是transform的最后一列。关于R和S的分解,PBRT给了一个公式:M_(i+1) = (M_i + ((M_i)^T)^(-1))*0.5,直到M收敛。M初始状态为transform左上角的3*3的矩阵。
M收敛后得到的矩阵为R,从而可以解出S.代码大概是这样:
void decompose(Vec3<float>& T, Mat33<float> &R, Vec3<float>& S) { T[0] = m[0][3], T[1] = m[