BOOL XMMatrixDecompose(
[out] XMVECTOR* pOutScale,
[out] XMVECTOR* pOutRotationQuaternion,
[out] XMVECTOR* pOutTranslation,
[in] CXMMATRIX M
);
这个函数接受一个变换矩阵 M,并通过输出参数 pOutScale、pOutRotationQuaternion 和 pOutTranslation 返回矩阵中分解得到的缩放、旋转(以四元数表示)、平移信息。
这是一个示例用法:
XMMATRIX transformMatrix = XMMatrixAffineTransformation(XMVectorSet(2.0f, 1.5f, 1.0f, 1.0f),
XMVectorSet(0.0f, 0.0f, 0.0f, 1.0f),
XMQuaternionRotationRollPitchYaw(0.0f, XMConvertToRadians(45.0f), 0.0f),
XMVectorSet(1.0f, 2.0f, 3.0f, 1.0f));
XMVECTOR scale, rotation, translation;
if (XMMatrixDecompose(&scale, &rotation, &translation, transformMatrix))
{
// 使用 scale、rotation 和 translation 进行后续操作
}
else
{
// 分解失败,处理错误
}
在这个例子中,XMMatrixDecompose 将从 transformMatrix 中提取出缩放、旋转和平移信息,如果成功则将这些信息存储在 scale、rotation 和 translation 中。如果分解失败,可以根据具体情况进行错误处理。
转载请注明出处:http://www.zyzy.cn/article/detail/26936/Win32 API/Directxmath.h/XMMatrixDecompose