多剪切矩阵作为旋转、非均匀尺度和旋转的组合?
Multiple-shear matrix as combination of rotation, non-uniform scale, and rotation?
我正在尝试弄清楚如何仅使用平移、旋转和非均匀缩放来获得与任意仿射 3D 矩阵等效的方法。
处理剪切是棘手的部分。单个剪切变换可以表示为旋转、非均匀缩放和旋转的组合,如下所述:
Shear Matrix as a combination of basic transformation?
但是,对于 3D,可以同时在多个平面上进行剪切;例如 XY、XZ 和 YZ。虽然我可以用旋转、缩放、旋转来表达每一个,但这总共是 6 次旋转和 3 次缩放操作。我有一种直觉,所有的剪切都可以通过一次旋转、非均匀缩放和旋转一次处理,但涉及的数学问题超出了我的理解范围。
在查看任意仿射矩阵时,我不确定什么构成了剪切与旋转(我认为对于如何拆分它有无限的解决方案?)所以我想解决 "arbitrary sharing along multiple planes" 的问题是与一般只求解仿射矩阵(没有平移)一样。无论哪种方式,任何可以帮助我的东西都将不胜感激。
(完整)SVD 让您接近。这给出了一个 3x3 矩阵 A
A = U*S*V'
其中所有矩阵都是 3x3,S 是对角线,U 和 V 是正交的。不幸的是,U 和 V 可能不是旋转,也就是说,它们可能有行列式 -1。
一种继续进行的方法是计算 U 的行列式,如果它是 -1 则将其替换为
U~ = U * diag(-1,1,1) (ie negate the first col of U)
并将 S 替换为
S~ = S*diag( -1, 1, 1) (ie negate the top left elt of S)
然后对于 V 也类似(尽管现在,由于转置,您想要否定 V 的第一行)
我正在尝试弄清楚如何仅使用平移、旋转和非均匀缩放来获得与任意仿射 3D 矩阵等效的方法。
处理剪切是棘手的部分。单个剪切变换可以表示为旋转、非均匀缩放和旋转的组合,如下所述: Shear Matrix as a combination of basic transformation?
但是,对于 3D,可以同时在多个平面上进行剪切;例如 XY、XZ 和 YZ。虽然我可以用旋转、缩放、旋转来表达每一个,但这总共是 6 次旋转和 3 次缩放操作。我有一种直觉,所有的剪切都可以通过一次旋转、非均匀缩放和旋转一次处理,但涉及的数学问题超出了我的理解范围。
在查看任意仿射矩阵时,我不确定什么构成了剪切与旋转(我认为对于如何拆分它有无限的解决方案?)所以我想解决 "arbitrary sharing along multiple planes" 的问题是与一般只求解仿射矩阵(没有平移)一样。无论哪种方式,任何可以帮助我的东西都将不胜感激。
(完整)SVD 让您接近。这给出了一个 3x3 矩阵 A
A = U*S*V'
其中所有矩阵都是 3x3,S 是对角线,U 和 V 是正交的。不幸的是,U 和 V 可能不是旋转,也就是说,它们可能有行列式 -1。
一种继续进行的方法是计算 U 的行列式,如果它是 -1 则将其替换为
U~ = U * diag(-1,1,1) (ie negate the first col of U)
并将 S 替换为
S~ = S*diag( -1, 1, 1) (ie negate the top left elt of S)
然后对于 V 也类似(尽管现在,由于转置,您想要否定 V 的第一行)