我正在研究一种工具,用于从程序中转换旧的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矩阵的一半。目前,我无法弄清楚如何从该矩阵中获得刻度和旋转,基本上无法将它们彼此分开。因此,如果有人对如何做到这一点有所了解,那么全世界都很棒。
矩阵的行列式表示体积增加的因素。如果矩阵保留角度,则该行列式必须是比例因子的三次方。以立方根为单位,您将获得比例因子。
将矩阵的所有元素除以该因子,您应该以纯旋转结束,或者从数学上说,是正交矩阵。 Wikipedia关于如何在此与其他形式主义之间进行转换有很好的article。