简单的弹跳计算出错
Simple bouncing calculations going wrong
我正在努力学习 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)
发生这种情况是因为速度仅在 ycord
变为负值后才反转。
要更改此行为,您必须计算 ycord 达到零时的速度并更改符号。
或者简单地说,选择一个更好的起点 ycord
,这样球正好到达 0 并且永远不会进入负值范围。
我认为如果您将初始 ycord 更改为 52.8,您会看到不同。
就物理学而言,您正在模拟阻尼效果,因为球在从负值 ycord
变为 0 的过程中正在失去能量。因此,当 ycord 变为零时,它开始时的速度小于当它越过零时它就这样做了。
我正在努力学习 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)
发生这种情况是因为速度仅在 ycord
变为负值后才反转。
要更改此行为,您必须计算 ycord 达到零时的速度并更改符号。
或者简单地说,选择一个更好的起点 ycord
,这样球正好到达 0 并且永远不会进入负值范围。
我认为如果您将初始 ycord 更改为 52.8,您会看到不同。
就物理学而言,您正在模拟阻尼效果,因为球在从负值 ycord
变为 0 的过程中正在失去能量。因此,当 ycord 变为零时,它开始时的速度小于当它越过零时它就这样做了。