在矩阵上应用变换而不是旋转和平移

时间:2014-10-13 12:43:19

标签: math matrix vector quaternions

我有两个实体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 *= ???

这可能吗?我问,因为我想隐藏平移和旋转组件,只允许访问组合的平移 - 旋转矩阵。

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您的转换是一系列旋转,您可以将它们相乘,然后应用该矩阵。

你可以使用你的转换进行一系列翻译,因为这样你就可以将它们加在一起并添加结果。

你能做的最好的事情是:

A = R*B + T

代数清楚地说明了这一点:

A = R(1)*R(2)*...*R(n)*B + (T(1)+T(2)+....+T(m))