c# - 以可变速度找到目标时间

标签 c# algorithm math

<分区>

所以我的游戏中有鱼雷,它们以每秒 0 米的速度开始并真实地加速。这么多秒后,它们停止加速并以恒定的速度向前行驶。

我与目标有一段距离,我基本上是在尝试计算自动瞄准的前置时间。

如此给定

到目标的距离;

加速度(每秒);

燃烧时间(加速停止前的秒数);

我需要基本上确定我相信弹丸每秒行进的平均米数。

我能看到的唯一方法就是这样。

        curdistance; //stores distance traveled per second
        currentspeed; //stores speed at a given second
        acceleration;

        for(int timer = 1; curdistance < distanceToTarget;timer++)
{
        currentspeed = currentspeed + acceleration; 
        curdistance = curdistance + ( currentspeed);

    if(timer >= burnTime)
    {
    acceleration = 0;
    }

}

现在可以了,但是有两个问题。

燃烧时间必须是整数,否则分数越小,运行次数越多以保持准确性。

例如,如果我想要 4.2 的燃烧时间以保持准确性,我必须运行它 42 次并每 10 秒计算一次。

此外,平均值可能会有相当大的偏差,这取决于它超过目标的程度,这又取决于计时器的精确度。

如果我的抛射物以每秒 30 米的速度移动并且它需要移动 121 米,它会在它移动之前再增加一整秒的行程 好吧,你已经到达/超过了目标,这意味着它实际上会瞄准因为它比实际应该多出 29 米。

使用此算法解决此问题的唯一方法是每 10 秒或 100 秒更频繁地检查一次。

我觉得虽然可能有一个我不知道的数学方程式可以让我精确地解决这个问题。

有什么帮助吗?

最佳答案

在加速运动期间,您可以使用 d = a*t^2/2,或等效地 t = sqrt(2*d/a),此时速度v = a*t。 然后您可以使用该 v 推断目标。

关于c# - 以可变速度找到目标时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17677641/

相关文章:

javascript - 基本的 Javascript 数学文本字段

r - 在 R 中获取导数

c# - 是否可以将 WPF RichTextBox 中的文本设为 "zoom"?

algorithm - 在大型矩阵中切换和计数查询

c# - 在 finally 中进行 try/catch 可以吗?

将图像裁剪为特定比例的算法

algorithm - 对细化算法有更多的控制?

math - 计算位于 3D 平面上的向量

c# - 使用 EntityFramework 4 为实体分配 ID

c# - 母版页中的 ResolveUrl 问题