首页 > 解决方案 > 简单的弹跳计算出错

问题描述

我想学习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)

标签: pythonphysics

解决方案


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

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


推荐阅读