方向矢量的旋转矩阵(向前,向上,向右)

我需要从方向矢量(vForward)获得旋转矩阵,我也有vRight和vUp矢量。 所有这些矢量都是单位矢量。

我只需要获得旋转矩阵。

为了仅在平行于地面的一个平面(xy)中获得旋转矩阵,我这样做:XMMATRIX xmResult;

Vec3f vFwd = pPlayer->VForward;
vFwd.z = 0;
vFwd.Normalize();

xmResult = XMMatrixSet( vFwd.y,     -vFwd.x,    0,      0,
    vFwd.x,      vFwd.y,    0,      0,
    0,          0,          1,      0,
    0,          0,          0,      1);

以上代码只能获得旋转矩阵围绕Z轴旋转:

我想让代码围绕所有轴旋转。 这是我不得不使用的坐标系。 我知道这很奇怪:

我正在使用的坐标系统

这是我以后在代码中使用我的矩阵的方式:

XMStoreFloat3((XMFLOAT3*)&vStart, XMVector3Transform(XMLoadFloat3((XMFLOAT3*)&vStart), xmTransformation));
XMStoreFloat3((XMFLOAT3*)&vEnd, XMVector3Transform(XMLoadFloat3((XMFLOAT3*)&vEnd), xmTransformation));

根据你使用矩阵的方式,Right,Up和Forward应该对应矩阵的行或列。

xmResult = XMMatrixSet( vRight.x, vRight.y, vRight.z, 0, vFwd.x, vFwd.y, vFwd.z, 0, vUp.x, vUp.y, vUp.z, 0, 0, 0, 0, 1);
链接地址: http://www.djcxy.com/p/81807.html

上一篇: Rotation Matrix from direction vector (Forward, Up, Right)

下一篇: Rotate 3D cube so side is facing user