方向矢量的旋转矩阵(向前,向上,向右)
我需要从方向矢量(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)