如何从四元数中获取任意局部轴?

时间:2016-03-19 14:53:12

标签: c++ 3d rotation directx quaternions

在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) };
}

0 个答案:

没有答案