我有两个实体A和B,它们都有旋转四元数和平移向量。我按实体B转换实体A,如下所示:
A.rotation *= B.rotation
A.translation *= inverse(B.rotation)
A.translation += B.translation
我不想在实体的平移和旋转组件上应用这些转换,而是想从这些组件创建矩阵并在结果矩阵上应用转换:
A.matrix = mat4(A.rotation) * mat4(A.position)
B.matrix = mat4(B.rotation) * mat4(B.position)
A.matrix *= ???
这可能吗?我问,因为我想隐藏平移和旋转组件,只允许访问组合的平移 - 旋转矩阵。
谢谢!
答案 0 :(得分:0)
如果您的转换是一系列旋转,您可以将它们相乘,然后应用该矩阵。
你可以使用你的转换进行一系列翻译,因为这样你就可以将它们加在一起并添加结果。
你能做的最好的事情是:
A = R*B + T
代数清楚地说明了这一点:
A = R(1)*R(2)*...*R(n)*B + (T(1)+T(2)+....+T(m))