从3x3矩阵中提取旋转和缩放

时间:2019-11-17 10:02:39

标签: math matrix 3d

我正在研究一种工具,用于从程序转换旧的3d数据并将其转换为新的格式。 我的问题是,旧程序将缩放/旋转存储在3x3矩阵中,而我对这种东西没有经验。

为了进行测试,我仅创建了一个比例为0.5的对象并将其保存。它具有矩阵

0.5、0.0、0.0

0.0,0.5,0.0

0.0,0.0,0.5

这些是所有3轴的比例尺

然后我将对象更改为仅具有45度的旋转xyz和1的比例,并得到了这个矩阵

0.5,-0.146447、0.853553

0.5,0.853553,-0.146447

-0.707107、0.5、0.5

我能够将其转换为正确的角度

现在,我来到我的展示台:我将对象更改为具有0.5的比例和45度的旋转。新矩阵以某种方式将两个值组合为一个矩阵:

0.25,-0.0732233、0.426777

0.25,0.426777,-0.0732233

-0.353553、0.25、0.25

从本质上讲,vales是第二元素矩阵的一半。 目前,我无法弄清楚如何从该矩阵中获得刻度和旋转,基本上无法将它们彼此分开。因此,如果有人对如何做到这一点有所了解,那真是太好了。

1 个答案:

答案 0 :(得分:0)

矩阵的行列式表示体积增加的因子。如果矩阵保留角度,则该行列式必须是比例因子的三次方。以立方根为单位,即可得到比例因子。

将那个矩阵的所有元素除以那个因子,您应该以纯旋转结束,或者从数学上说是正交矩阵。 Wikipedia对于如何在此与其他形式主义之间进行转换提供了很好的article