gpt4 book ai didi

javascript - 二维抛物线弹丸

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:28:10 24 4
gpt4 key购买 nike

我正在寻求创建一个基本的 Javascript 实现的抛射物,它遵循抛物线弧(或接近抛物线的弧线)到达特定点。当涉及到复杂的数学时,我并不是特别精通,并且花了几天时间阅读有关该问题的 Material 。不幸的是,看到数学解决方案对我来说毫无用处。理想情况下,我正在寻找伪代码(或者甚至是现有的示例代码)来尝试理解它。我发现的一切似乎都只提供了部分解决方案。

实际上,我希望模拟箭从一个位置(弓的位置)到另一个位置的飞行。我已经通过在每个逻辑间隔更新其速度来模拟重力对我的弹丸的影响。我现在想弄清楚的是,我如何找出正确的轨迹/Angular 来发射我的箭,以便在尽可能短的时间内到达我的目标。

如有任何帮助,我们将不胜感激。

最佳答案

Pointy 的回答很好地总结了如何在给定初始轨迹的情况下模拟物体的运动(其中轨迹被认为是方向速度 ,或组合一个向量)。

但是您在问题中说过(如果我没听错的话)您想确定仅知道原点O 和目标 P预期点。

坏消息是,在实践中,对于任何特定的 P,都有无数条抛物线轨迹可以让您从 O 到达那里。 Angular 和速度是相互依存的。

如果我们翻译所有内容使得 O 位于原点(即 [0, 0]),那么:

T_x = P_x - O_x            // the X distance to travel
T_y = P_y - O_y // the Y distance to travel

s_x = speed * cos(angle) // the X speed
s_y = speed * sin(angle) // the Y speed

那么任意时间点(t)的位置(x, y)为:

x = s_x * t
y = s_y * t - 0.5 * g * (t ^ 2)

所以你有影响

T_x = s_x * t
T_y = -0.5 * g * (t ^ 2) + s_y * t

但您有三个未知数(ts_xs_y)和两个联立方程。如果您解决了其中一个问题,那应该足以求解方程式。

FWIW,修复 s_xs_y 等同于修复 speedangle,那位只是简单的三 Angular 函数。

有些组合当然是不可能的 - 如果速度太低或 Angular 太大,射弹将在到达目标之前撞到地面。

注意:这假设位置被连续评估。根据 Pointy 的回答和您自己对如何模拟运动的描述,它与时间以离散 增量流逝时发生的情况不太相符。不过,如果您足够频繁地重新计算位置(即每秒 10 次),它应该足够准确。

关于javascript - 二维抛物线弹丸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5262240/

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