我正在使用VPython创建虚拟游泳池/台球游戏。我想让它每隔dt更新一次“时间”(我使用rate()来限制循环时间),而不是更快。
我对位置的计算预测任何潜在的碰撞0
例如:如果dt = 1,并且我在.25s处检测到碰撞,我将位置提前0.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)