【问题标题】:'Basic' Projectile Trajectories“基本”弹丸轨迹
【发布时间】:2017-05-13 12:33:18
【问题描述】:

我正在尝试在 Java 中重新创建弹丸轨迹,但是,我遇到了一些问题。我看过很多解释公式和东西的视频,但他们的方程式中有一个目标,而我没有。我的意思是他们有一个范围来计算他们的子弹下落,但我试图弄清楚子弹最终会下落多少。

我目前的工作是:

dropDistance = (9,807 / 2) * t²

我不是数学家,我确实被困在这个问题上,当目标的范围未知时,我不知道如何实现这个。它应该在 3D 空间 (x,y,z) 中工作,但我认为公式中只需要 Y?

【问题讨论】:

  • 不适合 SO,请改用数学堆栈交换!
  • 你不能简单地使用子弹的“重量”来解决给定子弹与地面的高度的距离吗?
  • 我们可以使用公式s = (u * t) - (0.5 * a * t * t)从给定u的原点计算垂直位移 - 初始垂直速度,t,经过的时间和a,在这种情况下 - 9.8 (m/s/s) - 假设你试图在地球上重建轨迹。您可以在 2 维或 3 维空间中重复此操作,以获得 2 维或 3 维空间中的点。
  • 我投票结束这个问题,因为它应该是关于数学的
  • 我用minimal reproducible example 写了一个答案,这可能对这里有帮助:stackoverflow.com/a/21785654/3182664 还有一个稍微高级一点的stackoverflow.com/a/23204945/3182664

标签: java math projectile


【解决方案1】:

这是一个简单的物理问题。

你需要从牛顿第二运动定律开始。你听说过,但重要的是这三个方程,因为力和加速度是向量:

force = mass*acceleration

从二维开始简化您的问题。在这种情况下,这是两个等式:

Fx = m*ax = 0 (no force in x-direction; ignore drag)
Fy = m*ay = -m*g

求解 ay:

ay = -g = constant (9.8 m/sec^2)

你从微积分知道ay = dvy/dtvy = duy/dt。积分两次以获得位置 uy 作为时间的函数:

uy = -(g*t^2)/2 + c0*t + c1

你还需要ux:

ax = dvx/dt = 0

积分两次:

ux = c2*t + c3

替换初始条件来计算常数。

停止观看视频并阅读介绍物理文本。

【讨论】:

  • 请注意,您有一个不常见的约定,即y 轴指向下方。
  • 你说的很对。我应该把加速标志设为负数。我会解决的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-05
  • 1970-01-01
  • 1970-01-01
  • 2021-08-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多