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

发布于 2024-11-03 07:02:26 字数 1016 浏览 2 评论 0原文

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

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

到目前为止我发现的是旋转矩阵(来自 http://en.wikipedia.org/ wiki/Rotation_matrix#Rotations_in_third_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 标准。

I have a QVector3D which defines an object's velocity in local coordinate system (= positive Z means moving forward,...), and a QVector3D in 10th-of-degree (0..3600) steps defining the rotation of the object in the global coordinate system.

now to simulate my scene, i need the object's velocity QVector3D in global coordinate system.

what i've found so far are the rotation matrices (from 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
    };

but i have no idea how to correctly use them.

EDIT: if its relevant: units, rotation direction, ... follow OpenGL standard.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

再浓的妆也掩不了殇 2024-11-10 07:02:26

使用矩阵乘积:transformation_matrix xoriginal_vector=transformed_vector

Use matrix products: transfomration_matrix x original_vector = transformed_vector

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文