二维宇宙飞船运动数学

2024-03-22

我正在尝试制作一款自上而下的太空飞船游戏,我希望动作更加真实。 360度,有惯性、重力等。

我的问题是我可以毫无问题地让船以惯性移动 360°,但我需要做的是限制发动机的运行速度,同时不限制其他推/拉船的力。

因此,如果发动机速度最大为 500,并且船舶从重力井处以 1000 的速度行驶,则当发动机打开时,船舶不会达到 1500,但如果指向远离正在行驶的角度,那么它可能会减慢向下。

为了它的价值,我正在使用构造 http://www.scirra.com,而我所需要的只是它的数学。

感谢您的帮助,我因为试图解决这个问题而变得秃头。


取一页来自相关物理学 http://en.wikipedia.org/wiki/Special_relativity,其中对象不能超过光速 http://en.wikipedia.org/wiki/Speed_of_light#Upper_limit_on_speeds:

(请参阅下面我的工作 C++ 代码片段和运行演示 http://www.leftium.com/asteroid/[仅限 Windows]。)

  1. 将常数 c 设置为物体可以达到的最大速度(游戏中的“光速”)。
  2. 如果施加力会增加speed物体的加速度(速度变化)除以洛伦兹因子。if 条件在狭义相对论中并不现实,但它使飞船在高速行驶时更加“可控”。
  3. 更新:通常情况下,当船舶以接近 c 的速度行驶时,将很难操纵,因为改变方向需要将速度推过 c 的加速度(洛伦兹因子最终会将新方向上的加速度缩放到几乎为零。)为了恢复可操纵性,使用没有洛伦兹缩放时速度矢量的方向和缩放后的速度矢量的大小。

解释:

Definition of Lorentz factor, where v is velocity and c is the speed of light: gamma = 1 / sqrt(1 - v^2 / c^2)

这是可行的,因为洛伦兹因子随着速度的增加而接近无穷大。物体需要施加无穷大的力才能穿过光速。在较低速度下,洛伦兹因子非常接近 1,接近经典牛顿物理学。

洛伦兹因子随速度增加的图表:

注意:我之前尝试通过使用摩擦力设置来解决小行星游戏中的类似问题。我在读到你的问题时才想出了这个解决方案^^

更新:我尝试实现这一点,发现一个潜在的缺陷:当接近光速 c 时,所有方向的加速度都受到限制,包括减速! (违反直觉,但是现实世界中狭义相对论会发生这种情况吗?)我想可以修改该算法以考虑速度和力矢量的方向...该算法已被修改以考虑矢量的方向,因此船舶在高速行驶时不会“失去可控性”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

二维宇宙飞船运动数学 的相关文章

  • .NET:十进制到舍入字符串

    如果我有一个decimal 如何获得带有两位小数的字符串版本 这不起作用 Math Round myDecimal 2 ToString 0 00 不要使用大括号 它们用于使用以下命令将格式化值嵌入到较长的字符串中string Format
  • 为什么在比较范围内的数字时会在汇编代码中发生分支?

    我正在读书this https stackoverflow com questions 17095324 fastest way in c to determine if an integer is between two integers
  • Java中的整数除法[重复]

    这个问题在这里已经有答案了 这感觉像是一个愚蠢的问题 但我在 Java 文档中找不到答案 如果我声明两个 int 然后将它们相除 到底发生了什么 他们是否转换为floats doubles首先 划分 然后投射回integer 或者除法是作为
  • 使用 ThreeJS 获取球体纹理上的点击位置

    目前 我有一个带有纹理的球体 它绕 y 轴旋转 我还有在 3D 空间中单击的位置 以及球体上的旋转位置 我认为 目标 获取纹理上的位置 例如 我想获取我点击的图像的哪个方块 参见示例球体和下图 在实践中 我不会使用此图像 但我觉得这将是一个
  • PHP 浮点错误与基本数学[重复]

    这个问题在这里已经有答案了 可能的重复 为什么十进制数不能用二进制精确表示 https stackoverflow com questions 1089018 why cant decimal numbers be represented
  • 检查一个数字是否可以表示为两个立方之和的高效程序

    我正在尝试编写一个程序来检查数字 N 是否可以表示为两个立方之和 即 N a 3 b 3 这是我的代码 复杂度为 O n include
  • 查找椭圆或贝塞尔曲线上的等距点

    目前我正在编写 JavaScript 代码 将对象放置在屏幕上的椭圆上 我试图找到能够解决这个问题之一的算法 椭圆将是完美的 但如果它太昂贵 贝塞尔曲线也可以 抱歉 但不幸的是我的数学不允许我使用我找到的答案 https mathoverf
  • 具有行进立方体的隐式曲面上的 CSG 操作

    我用行进立方体渲染等值面 或者也许游行广场 https en wikipedia org wiki Marching squares因为这是二维的 我想做集合运算 比如集合差 交集和并集 我认为这很容易实现 只需在两个不同隐式曲面的两个顶点
  • 帮助我在 Python 中实现反向传播

    EDIT2 新的训练集 Inputs 0 0 0 0 0 0 1 0 0 0 2 0 0 0 3 0 0 0 4 0 1 0 0 0 1 0 1 0 1 0 2 0 1 0 3 0 1 0 4 0 2 0 0 0 2 0 1 0 2 0 2
  • 截断浮点数而不向上舍入

    我有一个浮点数 我想将其截断为 3 位 但我不想向上舍入 例如 转换1 0155555555555555 to 1 015 not 1 016 我将如何在 Ruby 中做到这一点 您还可以转换为 BigDecimal 并对其调用 trunc
  • 指针 (*argv[]) 的指针的指针算术?

    我知道foo bar 等于 foo bar 但是什么是 foo bar 等于 例如访问 argv 2 我对这一点的理解有些困惑 我认为可能是这样的 foo bar 但我不确定 如果这是一个简单的答案 我深表歉意 a b 相当于 a b 由于
  • 求反射角的弧度

    我正在编写一个简单的 Flash 游戏 只是为了学习 Flash 并提高我的数学能力 但我对弧度感到非常困惑 因为这对我来说是新的 到目前为止 我所做的是使用鼠标 单击并释放 使用弧度向该方向射出一个球 现在我想要发生的是 当球撞到墙壁时
  • 在二维平面中找到距离 P 点最近的 K 个点

    资料来源 亚马逊面试问题 解决方案1制作大小为 K 的堆并按最小距离收集点O NLogK 复杂 解决方案2 取大小为 N 的数组并按距离排序 应该使用QuickSort 霍尔修改 取前 K 点作为答案 这太复杂了 NlogN 但可以优化到近
  • Python:球体的交集

    我对编程非常陌生 但我决定承担一个有趣的项目 因为我最近学会了如何以参数形式表示球体 当三个球体相交时 有两个不同的交点 除非它们仅在一个奇点处重叠 球体的参数表示 我的代码是根据答案修改的Python matplotlib 绘制 3d 立
  • 确定范围是否重叠

    给定两个具有整数开始时间和结束时间的事件 E1 s1 e1 E2 s2 e2 实现快速布尔检查以查看事件是否重叠 我有解决方案 但我很想看看其他人想出了什么 编辑 好的 这是我的解决方案 e1 gt s2 s1 gt s2 e2 lt s1
  • 以一定角度遍历二维数组

    通常我们按行或列遍历数组 但这里我想以角度遍历它 我会尝试解释我的意思 因此 假设角度是 45 度 那么它会搜索为 0 0 then 0 1 1 0 then 0 2 1 1 2 0 等等 抱歉 无法上传图像 因为我是新用户 不允许这样做
  • Python 小数.InvalidOperation 错误

    当我运行这样的东西时 我总是收到此错误 from decimal import getcontext prec 30 b 2 3 Decimal b Error Traceback most recent call last File Te
  • C# 中四舍五入到偶数

    我没有看到 Math Round 的预期结果 return Math Round 99 96535789 2 MidpointRounding ToEven returning 99 97 据我了解 MidpointRounding ToE
  • 小数除以小数并得到零

    为什么当我这样做时 select CAST 1 AS DECIMAL 38 28 CAST 1625625 AS DECIMAL 38 28 我得到 0 吗 但是当我得到 0 时 select CAST 1 AS DECIMAL 20 10
  • Karasuba算法递归过多

    我正在尝试用 c 实现 Karasuba 乘法算法 但现在我只是想让它在 python 中工作 这是我的代码 def mult x y b m if max x y lt b return x y bm pow b m x0 x bm x1

随机推荐