如何预测弹丸运动?

2024-04-23 23:35:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我被要求进行一个项目工作,预测在空气中运动的球在二维空间中的运动轨迹。在

那么,有什么可能的方法来处理它呢?如果你能提供一些细节会很有帮助。而且,我不知道这是不是问这些事情的正确地点。但你看,只有专家才能指明一条路要走!在

我可以做图像处理,如边缘检测和一些计算机视觉,如使用hough变换的车道检测、跟踪某些身体(但没有预测)、面部检测等

我试图用kalman滤波器来完成这个项目,但是我被卡住了 找不到出路。所以我想也许我应该找别的办法。在

请推荐我。谢谢。在


Tags: 项目方法轨迹计算机空间视觉事情细节
1条回答
网友
1楼 · 发布于 2024-04-23 23:35:37

这是一个实用的计算机编程网站,所以我将讨论一种使用它的方法。既然你没有提供你自己的细节,我也避免细节。如果你想要更多关于这个方法的细节,你需要编辑你的问题来显示你自己的努力,最好是用一些代码。在

这和许多物理问题一样,可以看作是具有初始值的常微分方程的一个问题。但像许多问题一样,你需要列出你的假设。假设球在接近海平面的地球表面移动,在地球大气层中,速度远低于声速。所以重力加速度,空气密度,等等都可以看作是常数。球的质量和大小可能很重要,但让我们只考虑质量,把球大小(和形状)的任何问题都归结到空气阻力中。对于一个给定的问题,你可以认为“空气阻力系数”也是常数。在

初始值为:

  1. 球在开始时间的位置。因为你写的是“二维移动”,我们可以使它们相对于地面x(水平位置)和y(垂直位置)。它们需要水平和垂直,适合球所在的地球部分。在
  2. 球的初始速度。这也有水平和垂直的组件,所以我们可以使用变量vx和{}。在

然后有四个变化的变量,xyvx,和{}。球上的方程式来自牛顿运动定律和微积分(后者用x等定义vx,等等)。球上有两种主要的力量:

  1. 重力,其大小为mg,并且指向正下方。在
  2. 空气阻力,也叫阻力,它指向与当前方向相反的方向。规模是很棘手的。有multiple formulas for drag。您选择的一个或多个取决于模拟的复杂性。在

根据你想要的球的复杂程度,你也可以考虑球的旋转,这取决于你想要的旋转。但这两个是你写的最少的。在

然后使用常微分方程求解器来模拟球的位置和速度。有很多,但是一个非常好而且相当简单的是RK4, the fourth-order Runge-Kutta method。这很简单,你可以自己编程,但有很多包可以做到这一点。一个流行的函数是scipy包中的scipy.integrate.odeint ,它可以执行多种方法。在

如果你不了解ODE求解器,你真的不应该做这种项目。你提到的技能似乎与这个项目无关。如果您删除了需求中的“空中”部分,则会有更简单的模拟。在

相关问题 更多 >