我有一个在世界空间某处被翻译的对象的世界矩阵object_world
。我想使用四元数围绕它的局部 x 坐标轴旋转。我该怎么做?
现在我只能像这样绕世界 x 轴旋转:
XMVECTOR right = XMVectorSet(1.f, 0.f, 0.f, 0.f);
XMVECTOR right_rot_quat = XMQuaternionRotationAxis(right, XM_PIDIV4);
XMMATRIX rot_mat = XMMatrixRotationQuaternion(right_rot_quat);
object_world = object_world * rot_mat;
尝试反转矩阵乘法的顺序:
object_world = rot_mat * object_world;
矩阵变换按组合顺序(即矩阵乘法的顺序(应用于点。 你说你原来的订单是绕着世界原产地轮换的;这表示您的旋转正在object_world
变换的"世界"坐标侧应用。
坐标,因此要尝试的逻辑方法是将其移动到object_world
转换的"对象"端。