当前位置: 首页 > 知识库问答 >
问题:

从xyz周围的旋转查找xyz方向

单于季
2023-03-14

我正在开发一款太空射击游戏,你可以让你的飞船绕x、y和z轴旋转,从而向任何方向拍摄。要旋转飞船(我在c中使用openGL),我可以绕x、y或z轴旋转0-360度。相机总是看同一个方向(沿着z轴向下,就像“默认”一样)。你只需看着飞船旋转。

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

我正在努力弄清楚的是,如何在任何时候都能够计算飞船的“方向”,并把它变成向量3d(在一个叫做向量3d的类中的x,y,z)。

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

因为船的方向是以x,y和z为中心旋转的,所以我想一定有可能把它变成一个向量3D,以向量的形式表示相同的方向(如果有意义的话)。

共有1个答案

白宏大
2023-03-14

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

 类似资料:
  • 问题内容: 目前,我正在使用Java处理数据类型,如果我正确理解该类型,则可以接受介于-9,223,372,036,854到+9,223,372,036,854,775,807之间的值。现在,你可以在下面看到,我创建了一个Long变量,名为,尽管当我将9223372036854775807插入为值时,我收到一条错误消息: “ int类型的文字9223372036854775807超出范围。” 我不

  • 尝试访问时出现语法错误。这两个都是互惠主义者的道具。js和菜谱。js。 下面是Recipe.js的代码示例: 截图。道具误差 但是,该项目不会抛出编译时错误,并且网站运行良好。 应用程序截图工作正常,没有chrome控制台或终端错误 我认为这与我的代码关系不大,与TypeScript或某种带有Javascript的预设配置关系更大,VScode无法识别每个组件的. props属性,因为当我将Rea

  • 我是新来的Spring靴。我在基于javax的验证上遇到了麻烦。控制器期望从POSTendpoint获得json obj的列表。在JSON请求json数组中,如果或为空,我得到正确的400错误。但是,当或为空时,它会抛出500个带有错误消息的异常: 控制器。JAVA 汽车JAVA Engine.java CollectionValidator。JAVA 验证者Advice.java 请求/响应:U

  • 我是lambda的新手,我尝试用下面的脚本用另一个lambda调用一个lambda函数 但是我得到“EndpointConnectionError:无法连接到endpointhttps://lambda-xyz/wehwk.com 我还为这个lambda函数标记了lambda完全访问策略。 我是不是漏掉了什么?提前致谢

  • Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2). You are given a target value to search. If found in the array return its in

  • 问题内容: HTML: CSS: 我希望基于“ for”属性选择标签以进行布局更改。 问题答案: 选择器将是,因此在CSS中: …或在使用DOM的JavaScript中: …或在JavaScript中使用jQuery: 这是一个属性选择器。请注意,某些浏览器(例如IE<8版本)可能不支持属性选择器,但较新的浏览器却支持。要支持IE6和IE7等较旧的浏览器,可悲的是,您必须使用一个类(很好,或采用其