java - 如何模拟单摆的空气阻力?

标签 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) {}
}

现在我想考虑空气阻力,这样钟摆就会减慢速度,最终停在垂直方向。我尝试根据我的需要调整代码,但没有一个起作用。

最佳答案

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

关于java - 如何模拟单摆的空气阻力?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30158759/

相关文章:

c - 在嵌入式环境中缩放值的高效程序

css - SASS 匹配类名中的数字

c++ - 使用 Blender 进行物理模拟

具有两个车轮速度的 Java 转向对象

java - Selenium @FindBy - 你什么时候会使用How?

java - 在 PageViewer 中动态更新图像

java - Cloneable#clone 方法不必要的转换

java - 多级字符串分割

objective-c - 测试符号变化的更好方法?

java - 尝试制作一个简单的落球程序