我正在尝试使用 directX 的 D3DXQuaternionRotationMatrix() 函数从矩阵中检索旋转四元数。该矩阵由 Blender(一种开源 3D 图形环境)生成,用于重新定向网格对象以在 DirectX 中使用。问题是上述函数只返回四元数中的“w”值。这是矩阵,后跟函数:
D3DXMATRIX mA;
._11 = 1;
._12 = 0;
._13 = 0;
._14 = 0;
._21 = 0;
._22 = 0;
._23 = 1;
._24 = 0;
._31 = 0;
._32 = 1;
._33 = 0;
._34 = 0;
._41 = 0;
._42 = 0;
._43 = 0;
._44 = 1;
D3DXQUATERNION qA;
D3DXQuaternionRotationMatrix( &qA, &mA );
D3DXQuaternionConjugate( &qA, &qA );
result:
qA.x =
qA.y =
qA.z = 0;
qA.w = 0.707
这个四元数不代表任何旋转......但是,矩阵确实有旋转......这个旋转是什么?为什么该函数不能提供准确的结果?