我有一个旋转球体,用户可以通过施加虚拟力来旋转它,就像虚拟加速器一样。我希望能够模拟良好的动量效果,以便当它们离开加速器时,球会以自然且真实的方式降低速度,就好像由于摩擦和/或重力一样。我不想陷入任何深奥的物理方程。我想快速完成此操作,因此如果我能找到一个显示如何执行此操作的代码示例,或者甚至是一页足够清晰的公式以便我可以进行编码,那就太好了。
我想要一个具有一两个可调节系数的公式,我可以根据我的需要调整这些系数以使球减速得更快或更慢。我不想涉及任何繁重的事情,比如开源物理库之类的。只是一些简单的事情。
我使用的是 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/