首页 > 解决方案 > 多剪切矩阵作为旋转、非均匀比例和旋转的组合?

问题描述

我试图弄清楚如何仅使用平移、旋转和非均匀缩放来获得任意仿射 3D 矩阵的等价物。

处理剪切是棘手的部分。单个剪切变换可以表示为旋转、非均匀比例和旋转的组合,如下所述: 剪切矩阵作为基本变换的组合?

但是,对于 3D,可以同时在多个平面上进行剪切;例如 XY、XZ 和 YZ。虽然我可以用旋转、缩放、旋转来表达每一个,但总共需要 6 次旋转和 3 次缩放操作。我有一种直觉,所有的剪切都可以通过一次旋转、非均匀比例和旋转一次处理,但所涉及的数学问题超出了我的想象。

在查看任意仿射矩阵时,我不确定什么构成剪切与旋转(我认为对于如何拆分它有无限的解决方案?)所以我想解决“沿多个平面的任意共享”的问题与解决相同一般仅适用于仿射矩阵(无翻译)。无论哪种方式,任何可以帮助我的事情都会受到赞赏。

标签: matrixgraphicslinear-algebratransformationrotational-matrices

解决方案


一个(完整的)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 的第一行)


推荐阅读