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

时间:2011-04-23 11:47:14

标签: qt math qt4 3d matrix

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

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

我到目前为止发现的是旋转矩阵(来自http://en.wikipedia.org/wiki/Rotation_matrix#Rotations_in_three_dimensions):

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

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

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

1 个答案:

答案 0 :(得分:0)

使用矩阵产品:transfomration_matrix x original_vector = transformed_vector