在3D坐标系中获取世界空间中的局部x,y或z轴我从四元数中创建一个矩阵,然后提取相应的列。但是如何获得任意的局部轴?假设我需要在世界空间中获得本地(0.7,0.7,0)。
作为参考,这里是我用来获取本地X轴的C ++代码:
inline Matrix Matrix::CreateFromQuaternion( const Quaternion& rotation )
{
using namespace DirectX;
Matrix R;
XMVECTOR quatv = XMLoadFloat4( &rotation );
XMStoreFloat4x4( &R, XMMatrixRotationQuaternion( quatv ) );
return R;
}
inline vec3 GetAxisX(const quat& rotation)
{
Matrix M = Matrix::CreateFromQuaternion(rotation);
return{ M(0, 0), M(1, 0), M(2, 0) };
}