简单的跳动计算出错

时间:2018-12-15 17:44:22

标签: python physics

我试图学习python,以便我可以玩数学。我一直在尝试以最小的物理量对弹跳对象进行非常简单的模拟,但似乎无法正常工作。计算应该给我一个波动图,但是由于某种原因,这个数字一直在减少。这是Python中发生的某种数学伪像吗?由于我只是使用非常琐碎的算法,因此没有理由从我的理解中减少数字。

import sys, pygame

velocity = 0
acceleration = 0.1
ycord = 50

while 1:

    pygame.time.Clock().tick(10)

    velocity -= acceleration
    ycord += velocity

    if ycord <= 0:
    velocity *= -1

    print (ycord)

1 个答案:

答案 0 :(得分:0)

之所以发生这种情况,是因为仅在ycord变为负值之后速度才反转。 要更改此行为,必须在ycord达到零时计算速度并更改符号。 或者简单地,选择一个更好的起点ycord,以使球精确地达到0,并且永远不会进入负范围。 我认为,如果您将初始ycord更改为52.8,您会发现有所不同。

就物理学而言,您正在模拟阻尼效果,因为球从负ycord变为0时会损失能量。因此,当ycord变为零时,其开始时的速度要小于它当它越过零时。