VPython需要多长时间来更新对象的位置

2024-05-26 09:17:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用VPython创建一个虚拟的台球/台球游戏。我想让它每隔dt“time”更新位置(我用rate()来限制循环时间),而不是更快。在

我对位置的计算向前看任何潜在的碰撞0

例如:如果dt=1,我在0.25秒检测到碰撞,我会将位置提前0.25秒,计算新的速度,然后在接下来的0.75秒内检查是否有碰撞。此操作将重复,直到在当前时间跳跃中未检测到碰撞为止。我想展示物体位置的变化。(然后rate()会导致等待,直到下一次通过)

我的问题是:通过拉动像球体位置= 球体位置+球体速度*t1 ---或者--- 在检测碰撞之前,将所有的位置和速度向量转换为元组,然后返回到向量,然后进行向量运算,然后转换为元组,然后再指定新的t=t+dt位置/速度值。在

转换是必要的,因为向量是可变数据,因此将值拉到新变量并进行数学运算仍然会改变球体位置值,从而导致屏幕上的位置更新。在

从本质上讲,Vpython是在可视化地更新位置的同时让其他进程暂停,还是在数据处理尽可能快的同时运行呢?在

如果有什么需要我解释清楚的话让我解释清楚

编辑:

我意识到我可以用一个便宜的解决方案。在

>>> h=vector(5,6,2)
>>> j=h
>>> j.mag*=2
>>> j
vector(10, 12, 4)
>>> h
vector(10, 12, 4)

上面的片段显示了如果直接复制一个向量会发生什么。但是如果你在复制过程中乘以1,它会产生一个新的向量,因为从技术上讲,这个值是改变了的,但是数值上是一样的

^{pr2}$

Tags: 游戏ratetime时间dt向量速度物体