我使用以下代码来模拟摆锤的动画,但是,它忽略了空气阻力并且永不停止。
while (true) {
angleAccel = -9.81 / length * Math.sin(angle);
angleVelocity += angleAccel * dt;
angle += angleVelocity * dt;
repaint();
try { Thread.sleep(15); } catch (InterruptedException ex) {}
}
现在,我要考虑空气阻力,以使摆锤减速并最终在垂直方向停止。我已经尝试使代码适应我的需要,但是它们都不起作用。
最佳答案
我认为,最明智的方法是将空气阻力纳入控制系统的微分方程中。例如,可以通过与速度成比例但在相反方向上的力来近似空气阻力。然后要么可以以封闭形式(例如阻尼谐波振荡器e^{-kt} sin (wt)
)求解方程,要么可以对其进行数值积分(从长远来看是更通用的解决方案)。