我正在尝试实现一种算法,该算法删除程序集的一部分(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 变换,但结果看起来更糟......