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

问题描述 投票:0回答:1

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

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

0.5,0.0,0.0

0.0,0.5,0.0

0.0,0.0,0.5

这些是所有三个轴的比例尺

然后我将对象更改为仅具有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是secound矩阵的一半。目前,我无法弄清楚如何从该矩阵中获得刻度和旋转,基本上无法将它们彼此分开。因此,如果有人对如何做到这一点有所了解,那么全世界都很棒。

math matrix 3d
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.