gpt4 book ai didi

c++ - 弹道曲线问题

转载 作者:IT老高 更新时间:2023-10-28 23:10:29 29 4
gpt4 key购买 nike

好吧,我知道这对于程序员来说是非常离题的,但我仍然需要这个应用程序,所以这里是:

弹道曲线(无风或任何其他条件)由以下两条线指定:

x coordinate

y coordinate

所以,有一个问题是您得到了 3 个未知值:x、y 和时间 t,但只有 2 个方程。你不能只用这些值来计算所有 3 个值,我得到了:

  • 速度v
  • 角度阿尔法
  • 原点坐标

因此,您必须决定指定哪一个。

现在你有了 2D 坦克游戏,或者类似的东西,你知道你有坦克,并且使用弹道你必须用设定的角度和力量击落对手。

我需要知道子弹何时击中地面,它可以是在飞行时进行的,也可以是预先计算的。我的问题出现了。使用哪种方式?预先计算或检查每一步是否落地。

如果我想预先计算,我需要知道地形的高度,这在逻辑上必须是恒定的,因为我不知道哪个 x 坐标。如果我知道 X,那就意味着我的炮塔前面就是墙。因此,当我撞到地面时,获得结果的唯一方法是检查撞到地面的时间间隔。这也很好,因为地形没有顶部是静态的耶!但这不是太大的开销,可以变得更简单吗?您遇到过这样的问题/解决方案吗?

在此先感谢,顺便说一句,地形可以是平坦的,使用线条或 NURBS,所以我请您提供一般解决方案,而不是具体到您在哪个高度拍摄会受到影响。

最佳答案

您可以通过求解一个方程为 t 并代入另一个方程来计算弹丸 y(x) 的路径。你得到

y = x tan(theta) - x^2g/2(v cos(theta))^2

然后找到着陆点就是计算该函数与定义地形高度的函数之间的交点。一个交叉点将是发射点,另一个将是着陆点。 (如果您的地形非常陡峭和丘陵,可能有超过 2 个交叉点,在这种情况下,您选择第一个 x 大于发射点的交叉点。)您可以使用各种 root-finding algorithms 中的任何一个来实际计算交集;检查任何数学或游戏物理库的文档,看看它们是否提供了执行此操作的方法。

关于c++ - 弹道曲线问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3215817/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com