首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从围绕xyz的旋转查找xyz方向

从围绕xyz的旋转查找xyz方向
EN

Stack Overflow用户
提问于 2012-09-08 23:57:48
回答 1查看 1.2K关注 0票数 2

我正在研究一种太空射击游戏,你可以绕着x,y和z轴旋转你的飞船,这样就可以向任何方向射击。为了旋转轮船(我在c++中使用openGL ),im绕x,y或z轴旋转0-360度。相机将始终看起来相同的方向(沿着z轴向下,如“默认”)。你只需看着船在旋转。

示例: glRotatef(-90.0f,1.0f,0.0f,0.0f);上面的示例将使船绕x轴旋转-90度。如果船在旋转前指向正y轴,就像在普通的太空射击中一样,在旋转后,船将指向负z轴。

我正在努力弄清楚的是,如何在任何时候都能够计算出船的“方向”,并将其转换为一个vector3d (在一个名为vector3d的类中的x,y,z)。

我通过将当前位置( x,y,z)与我也存储在vector3d中的速度相加来计算任何移动对象的位置(另一个vector3d,简称x,y和z),并将其乘以增量时间(自上一帧/更新以来的时间)。当我从宇宙飞船上发射一个弹丸时,我想要有飞船的方向矢量作为我发射的弹丸速度的基础,这样我就可以计算出弹丸的位置,就像我计算其他物体的位置一样,只需简单地将当前弹丸位置与速度乘以增量相加即可。

由于我有围绕x,y和z的旋转形式的船的方向,我认为一定可以以某种方式将其转换为以向量格式表示相同方向的vector3d (如果这有意义的话)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-09 09:02:14

取你感兴趣的方向的向量,例如原始未旋转的船的z轴。这是一个类似于(0,0,1)的向量。现在将旋转矩阵应用于它,就像您在glRotate documentation中找到的一样。您可以安全地忽略此矩阵的最后一行和最后一列,因为您只围绕原点旋转。该矩阵×向量乘法的结果将是给定旋转矩阵下的向量的图像。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12332235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档