Qt 将局部(=旋转)坐标转换为全局坐标

Qt 将局部(=旋转)坐标转换为全局坐标,qt,math,qt4,3d,matrix,Qt,Math,Qt4,3d,Matrix,我有一个QVector3D,它在局部坐标系中定义了对象的速度(=正Z表示向前移动,…),还有一个QVector3D,它以10度(0..3600)的步长定义了对象在全局坐标系中的旋转 现在要模拟我的场景,我需要对象在全局坐标系中的速度QVector3D 到目前为止,我发现的是旋转矩阵(来自): 但我不知道如何正确使用它们 编辑:如果相关:单位、旋转方向。。。遵循OpenGL标准。使用矩阵产品:转换矩阵x原始向量=转换向量现在使用四元数,不再需要这些矩阵… qreal angle(qreal in)

我有一个QVector3D,它在局部坐标系中定义了对象的速度(=正Z表示向前移动,…),还有一个QVector3D,它以10度(0..3600)的步长定义了对象在全局坐标系中的旋转

现在要模拟我的场景,我需要对象在全局坐标系中的速度QVector3D

到目前为止,我发现的是旋转矩阵(来自):

但我不知道如何正确使用它们


编辑:如果相关:单位、旋转方向。。。遵循OpenGL标准。

使用矩阵产品:转换矩阵x原始向量=转换向量现在使用四元数,不再需要这些矩阵…
qreal angle(qreal in){ //helper function
    return in/1800.0f*M_PI;
}

    qreal xptr[9]={
        1,0,0,
        0,cos(angle(rotation.x())),-sin(angle(rotation.x())),
        0,sin(angle(rotation.x())),cos(angle(rotation.x()))
    };
    qreal yptr[9]={
        cos(angle(rotation.y())),0,sin(angle(rotation.y())),
        0,1,0,
        -sin(angle(rotation.y())),0,cos(angle(rotation.y()))
    };
    qreal zptr[9]={
        cos(angle(rotation.z())),-sin(angle(rotation.z())),0,
        sin(angle(rotation.z())),cos(angle(rotation.z())),0,
        0,0,1
    };