如何模拟摆锤的空气阻力?

时间:2015-05-11 02:17:54

标签: java math physics

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

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

现在我想考虑空气阻力,以便摆锤减速并最终在垂直方向上停止。我已经尝试根据我的需要调整代码,但是没有一个能够工作。

1 个答案:

答案 0 :(得分:1)

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