矩阵 3D 相对于彼此旋转/平移/缩放

计算科学 线性代数 矩阵 3d
2021-12-29 20:56:07

我正在尝试实现一种算法,该算法删除程序集的一部分(3D)并将那些作为子/父的其他矩阵转换/旋转/缩放为新矩阵。例如:

(MT = 转换矩阵)

 - MT1 (first component)
   - MT2 (second component relative to MT1)
     - MT3 (third component relative to MT2)

删除 MT2 以获得新的结构,例如:

 - MT1
     - MT3

为此,我执行以下操作(MT3' 将在计算结束时保存到 MT3):

Rotation: MT2 * MT3 = MT3'
Translation: [MT2.tx + MT3.tx = MT3'.tx] [MT2.ty + MT3.ty = MT3'.ty] [MT2.tz + MT3.tz = MT3'.tz]
Scale: MT2.scale * MT3.scale = MT3'.scale

The resulting matrix looks like this:
MT3'x1   MT3'y1   MT3'z1   MT3'.tx
MT3'x2   MT3'y2   MT3'z2   MT3'.ty
MT3'x3   MT3'y3   MT3'z3   MT3'.tz
0        0        0        MT3'.scale

MT1 不包括在此计算中,因为问题是,它到目前为止工作,但有时 3D 组件没有平移,但正确转换。我无法弄清楚到底是什么问题,我现在搜索了大约 3 天,并跌跌撞撞地找到正确的答案。在大约 60-70 % 的测试程序集(大约 20 个)中,都运行良好,但我不知道我做错了什么......

我已经尝试过仿射 3D 变换,但结果看起来更糟......

0个回答
没有发现任何回复~