AI:通过prod(轻轻施力)评估宇宙飞船的质量并感知其速度的变化

时间:2016-11-02 05:09:09

标签: artificial-intelligence game-physics

问题

我必须编写AI代码才能在游戏中找到宇宙飞船的质量 我的AI可以向宇宙飞船施加一点力c,通过速度的变化来测量质量。

但是,我的AI只能在每个时间步中访问宇宙飞船的当前位置x

质量不是常数,但可以安全地假设它不会变化太快。

为简单起见: -
让空间为1D,没有重力 时间步长总是1秒。

目前有许多力量施加在宇宙飞船上,例如重力,由未知AI控制的自动推进系统,碰撞冲击等。

这些力的总和为b,取决于t(时间)。

特定时间步的加速a是通过一个不受我控制的游戏公式来计算的: -
a = (b+c)/m .................(1)

速度v更新为: -
 v = vOld + a .................(2)

位置x更新为: -
 x = xOld + v .................(3)

执行顺序(1) - (3)也是未知的,即AI不应该依赖这样的命令。

我糟糕的解决方案

我将施加c0=0.001几秒钟,并将结果与​​我施加c1=-0.001时的结果进行比较。

我认为bm在这段时间内是不变的。

我通过以下方式计算加速度: -

t   0   1   2   3  (Exert force `c0` at `t1`, `c1` at `t2`)
x   0   1   2   3  (The number are points in timeline that I sampling x.)
v     0   1   2    (v0=x1-x0, v1=x2-x1, ... )
a       0   1      (a0=v1-v0, ... )

现在我知道2点时间线的加速,我可以缓存c,因为我是发挥它的人。

使用a = (b+c)/m,未知bm以及已知a0a1c0c1: -
a0 = (b+c0)/m
a1 = (b+c1)/m

我可以解决这些问题,找到bm

然而,我的假设在开始时是错误的 bm实际上不是常量。

可以通过更随意的方式查看此问题:
许多人正试图举起沉重的岩石 我就是其中之一 如何在不中断过度的情况下测量岩石的质量(用我的手感觉)?

0 个答案:

没有答案