【问题标题】:How to simulate air resistance for a pendulum?如何模拟摆的空气阻力?
【发布时间】:2015-05-11 02:17:54
【问题描述】:

我使用下面的代码来模拟一个钟摆的动画,但是它忽略了空气阻力并且永不停止。

while (true) {
    angleAccel = -9.81 / length * Math.sin(angle);
    angleVelocity += angleAccel * dt;
    angle += angleVelocity * dt;
    repaint();
    try { Thread.sleep(15); } catch (InterruptedException ex) {}
}

现在我想考虑空气阻力,这样钟摆会减速并最终在垂直方向停止。我已经尝试根据我的需要调整代码,但是它们都不起作用。

【问题讨论】:

  • 欢迎来到 StackOverflow!请阅读how to ask
  • 请提供您尝试过的空气阻力示例!
  • 这不是编程问题本身,但它建模问题。对于元来说,纯算法设计是否在 SO 范围内是一个有趣的问题。
  • 我投票结束这个问题,因为它是关于物理的。

标签: java math physics


【解决方案1】:

在我看来,最明智的做法是在控制系统的微分方程中加入空气阻力。例如,空气阻力可以近似为与速度成比例但方向相反的力。然后,方程可以以封闭形式求解(例如,阻尼谐振子 e^{-kt} sin (wt)),也可以进行数值积分(从长远来看,这是一种更通用的解)。

【讨论】:

  • @rookiedev 力与velocity^2velocity^3 成正比,具体取决于环境(气体、液体),但如果速度越过障碍(这还不是马赫障碍),则空化和会发生湍流波动,这会使事情变得非常复杂。此外,钟摆通常在同一区域振荡,因此周围的层会周期性地受到影响,从而产生振荡。所以问题是目标精度是多少?对于简单的一个,只需沿钟摆取几个点并添加 dapening 力 f=-c0*velocity*|velocity| c0 是小的 skalar 其余的是向量
  • @rookiedev c0 是摆锤采样部分的剖面面积和环境粘度的函数。速度与摆锤采样部分的角速度和半径位置成正比
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
相关资源
最近更新 更多