python - 简单的弹跳计算出错
问题描述
我想学习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 变为零时,它的起始速度比它越过零时的速度要小。
推荐阅读
- webhooks - 即使合同没有更改,也会触发合同内容更改
- android - 在android studio中调用api时无法连接到/192.xxx.x.xxx:8000
- python - Gurobipy 问题:无法将 IIS 写入 .ilp 文件
- c# - EF Core 中的列名无效
- python - 用 args 绘图以在同一个图中有线条
- javascript - 仅显示到浏览器的损坏图像链接的功能
- laravel - 如何仅获取 withCount 属性
- javascript - 是否可以通过以编程方式触发发送功能在 whatsapp 网络中发送贴纸?
- python-3.x - 使用 Redis、Pickle、Python3 更好地处理序列化
- php - 在环境配置中设置正确的数据库主机