Math 对矩阵应用变换,而不是旋转和平移

Math 对矩阵应用变换,而不是旋转和平移,math,matrix,vector,quaternions,Math,Matrix,Vector,Quaternions,我有两个实体A和B,它们都有一个旋转四元数和一个平移向量。我将实体A转换为实体B,如下所示: A.rotation *= B.rotation A.translation *= inverse(B.rotation) A.translation += B.translation 我不想在实体的平移和旋转组件上应用这些变换,而是想从这些组件创建矩阵,并在生成的矩阵上应用变换: A.matrix = mat4(A.rotation) * mat4(A.position) B.matrix = ma

我有两个实体A和B,它们都有一个旋转四元数和一个平移向量。我将实体A转换为实体B,如下所示:

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 *= ???
可能吗?我这样问是因为我想隐藏平移和旋转组件,只允许访问组合平移-旋转矩阵


谢谢大家!

如果变换是一系列旋转,则可以,因为可以将它们相乘,然后应用该矩阵

你可以把你的转换看作是一系列的翻译,因为你可以把它们加在一起,然后再加上结果

您所能做的就是:

A = R*B + T
代数清楚地表明了这一点:

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

R是A旋转,T是A平移?是的,我认为这很明显。只要小心点,知道代数是怎么工作的。如果A=R(1)*(R(2)*B+t(1))=R(1)*R(2)*B+R(1)*t(1),我的表达式是不正确的。小心。