delphi - 模拟旋转球体由于摩擦和重力而减速的公式的简单代码示例?

标签 delphi rotation simulation physics

我有一个旋转球体,用户可以通过施加虚拟力来旋转它,就像虚拟加速器一样。我希望能够模拟良好的动量效果,以便当它们离开加速器时,球会以自然且真实的方式降低速度,就好像由于摩擦和/或重力一样。我不想陷入任何深奥的物理方程。我想快速完成此操作,因此如果我能找到一个显示如何执行此操作的代码示例,或者甚至是一页足够清晰的公式以便我可以进行编码,那就太好了。

我想要一个具有一两个可调节系数的公式,我可以根据我的需要调整这些系数以使球减速得更快或更慢。我不想涉及任何繁重的事情,比如开源物理库之类的。只是一些简单的事情。

我使用的是 Delphi 6 Pro,但我也了解 C/C++、Basic、Java 和 Javascript。

最佳答案

速度是位移的变化。加速度是速度的变化。

重力或摩擦力只会导致加速度(可能为负)。

因此,您需要做的就是在他们不激活加速器时应用负加速度。

因此,假设您的角度正在变化。应用加速器会增加每次迭代或时间步的角度变化量。如果您的角度是 t 并且角度的变化称为 dt(角速度),那么当应用加速器时,您将得到:

t = t + dt
dt = dt + a

其中a取决于您施加的的大小,或者他们“按下”加速器的程度(即这是加速度)。

您可能想要限制 dt(即旋转速度) - 如果您只想朝一个方向旋转,您将有一个正上限和 0 下限。如果您想要两个方向,您可以有负下限和正上限。

您需要做的就是在未应用加速器时将 a 设置为负数(如果 dt 为正数 - 如果 dt则将 a 设置为正数code> 为负数),并确保不“换行”(即当 dt 接近 0 时将其设为 0)。

关于delphi - 模拟旋转球体由于摩擦和重力而减速的公式的简单代码示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3930098/

相关文章:

使用 LibGDX 相对于相机位置的 Java 旋转模型

r - Stan 中指数随机变量的模拟(RStan 包/接口(interface))

python - 需要 SimPy 模拟可用性方面的帮助

c++ - 应用于 2 vector 的 Eigen Rotation2D

iphone - 在 iPhone 上按下 Controller 时翻转动画

excel - AnyLogic:将数据导出到 Excel 时数字格式错误

delphi - 使用 Indy 9 发送带有嵌入图片的电子邮件

delphi - 在Delphi中使用变量作为对象名称

delphi - DeferWindowPos 是否与 VCL 配合良好?

delphi - 如何禁用按钮中的闪烁图像?