2D太空飞船运动数学

YAS*_*YAS 25 math physics

我正试图制作一个自上而下的太空飞船游戏,我希望这个运动有点逼真.360度惯性,重力等

我的问题是我可以让船在惯性运动的情况下360°运行没有问题,但我需要做的是对发动机的运行速度施加限制,同时不限制推/拉船的其他力.

因此,如果发动机转速最大为500且船舶从重力井转向1000,那么当它的发动机打开时,该船不会进入1500,但是如果指向远离角度的话,那么它可能会变慢下.

对于它的价值,我正在使用Construct,而我所需要的只是数学.

感谢您的帮助,我想要解决这个问题.

Lef*_*ium 25

相对物理学中获取一个页面,其中物体不能超过光速:

(请参阅下面的我正在使用的C++代码段和运行演示 [仅限Windows].)

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

说明:

洛伦兹因子的定义,其中v是速度,c是光速: gamma = 1/sqrt(1  -  v ^ 2/c ^ 2)

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

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

替代文字

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

更新:我尝试实现这一点并发现了一个潜在的缺陷:随着光速c的接近,包括减速在内,所有方向的加速都受到限制!(反直觉,但在现实世界中这种情况会发生特殊的相对论吗?)我想这个算法可以被修改以考虑速度和力矢量的方向...... 该算法已被修改以考虑向量的方向所以这艘船不会在高速时"失去控制性".

更新:这是我的小行星游戏的代码片段,它使用洛伦兹因子来限制游戏对象的速度.它运作得很好!

更新:*添加了此算法的可下载演示(仅限Windows).我不确定是否所有依赖项都包含在zip中; 如果遗漏了什么,请告诉我.并且玩得开心^^

void CObject::applyForces()
{
    // acceleration: change in velocity due to force f on object with mass m
    vector2f dv = f/m;

    // new velocity if acceleration dv applied
    vector2f new_v = v + dv;

    // only apply Lorentz factor if acceleration increases speed
    if (new_v.length() > v.length())
    {
        // maximum speed objects may reach (the "speed of light")
        const float c = 4;

        float b = 1 - v.length_squared()/(c*c);
        if (b <= 0) b = DBL_MIN;

        double lorentz_factor = 1/sqrt(b);
        dv /= lorentz_factor;
    }

    // apply acceleration to object's velocity
    v += dv;

    // Update:
    // Allow acceleration in the forward direction to change the direction
    // of v by using the direction of new_v (without the Lorentz factor)
    // with the magnitude of v (that applies the Lorentz factor).
    if (v.length() > 0)
    {
        v = new_v.normalized() * v.length();
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 酷戏; 我从未想过"改变光速". (2认同)