如何使用四元数围绕平移对象的局部坐标轴旋转?



我有一个在世界空间某处被翻译的对象的世界矩阵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转换的"对象"端。

相关内容

  • 没有找到相关文章

最新更新