如果我有一个来自缩放,平移和旋转变换的矩阵。我想把这个矩阵分成两个矩阵。一个是旋转+平移矩阵,另一个是比例矩阵。
因为我想计算正确的法向量变换,所以我只需要正交矩阵来计算表面法向量
有什么想法吗?
答案 0 :(得分:1)
如果我有一个来自缩放,平移和旋转变换的矩阵。我想把这个矩阵分成两个矩阵。一个是旋转+平移矩阵,另一个是比例矩阵。
我假设你所说的这个矩阵是一个4x4矩阵,被一些人广泛使用,被其他人广泛鄙视,第四行是0,0,0,1。
我将导致这两个操作“缩放”和“旋转+翻译”。注意:这些操作不是可交换的。缩放3向量,然后旋转/平移此缩放向量会产生与通过反转操作顺序得到的结果不同的结果。
案例1,操作是“旋转+翻译”,然后是“缩放”。
令SR = S * R,其中S是具有正对角线元素的3×3对角矩阵(缩放矩阵),并且R是3×3正交旋转矩阵。矩阵SR的行将彼此正交,但列不是正交的。比例因子是矩阵SR行的范数的平方根。
算法: 给定4×4矩阵A,产生4×4缩放矩阵S,4×4旋转+平移矩阵T
A = [ SR(3x3) Sx(3x1) ]
[ 0(1x3) 1 ]
案例2,操作是“缩放”,然后是“旋转+翻译”。
现在考虑RS = R * S的情况。这里A的列将彼此正交,但行不是正交的。在这种情况下,比例因子是矩阵RS列的范数的平方根。
算法: 给定4×4矩阵A,产生4×4旋转+平移矩阵T,4×4缩放矩阵S
A = [ RS(3x3) x(3x1) ]
[ 0(1x3) 1 ]
如果缩放不均匀(例如,缩放x乘2,y乘4,z乘1/2),您可以通过查看上部3x3的行和列的内积来说明操作的顺序矩阵彼此。缩放最后(我的情况1)意味着行内部产品将非常接近零,但列内部产品将不为零。首先缩放(我的情况2)会逆转这种情况。如果缩放是统一的,则无法分辨哪种情况。你需要事先知道。
答案 1 :(得分:0)
只是一个想法 -
(1/sqrt(3),1/sqrt(3),1/sqrt(3))
,答案 2 :(得分:0)