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

VPython更新对象位置需要多长时间,python,vpython,Python,Vpython,我正在使用VPython创建一个虚拟台球/台球游戏。我想让它每隔一段时间更新一次位置(我使用rate()来限制循环时间),而不是更快 我对位置的计算展望了任何潜在的碰撞0 例如:如果dt=1,我在.25秒检测到碰撞,我将位置提前.25秒,计算新的速度,然后在接下来的0.75秒内检查碰撞。此操作将重复,直到在当前时间跳转中未检测到碰撞为止。然后我想展示对象位置的变化。(然后rate()导致等待,直到下一次通过) 我的问题是:通过拉sphere.position=sphere.position+sp

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

我对位置的计算展望了任何潜在的碰撞0 例如:如果dt=1,我在.25秒检测到碰撞,我将位置提前.25秒,计算新的速度,然后在接下来的0.75秒内检查碰撞。此操作将重复,直到在当前时间跳转中未检测到碰撞为止。然后我想展示对象位置的变化。(然后rate()导致等待,直到下一次通过)

我的问题是:通过拉sphere.position=sphere.position+sphere.velocity*t1这样的东西来做向量数学会更快吗 ---或--- 在检测碰撞之前,将所有位置和速度向量更改为元组并返回到向量,然后进行向量数学运算,然后在指定新的t=t+dt位置/速度值之前转换为元组,然后再转换为向量

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

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

如果我需要更清楚地解释一些事情,请告诉我

编辑:

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

>>> h=vector(5,6,2)
>>> j=h
>>> j.mag*=2
>>> j
vector(10, 12, 4)
>>> h
vector(10, 12, 4)
上面的部分显示了如果直接复制向量会发生什么。但是如果你在复制过程中乘以1,它会生成一个新的向量,因为从技术上来说,这个值是改变的,但从数值上来说,它是相同的

>>> k=h*1
>>> k
vector(10, 12, 4)
>>> k*=2
>>> k
vector(20, 24, 8)
>>> h
vector(10, 12, 4)

对于“做……是更快还是……”这样的问题,答案很简单:“两者都试一下,比较一下性能”。不幸的是,很多时候,没有更好的答案。据我所知,这是其中的一次。所以我不妨用代码不那么复杂的方式来做。理想情况下,他们会有一个刷新位置命令,当你调用它时,它会更新所有东西的位置