我正在用 python 编写我的第一个程序,它必须模拟粒子(两种气体)的混合。我不知道我在这个功能上做错了什么。我不希望粒子离开某个区域,即容器的墙壁。我使用 VPython。
def poruszanie(lista,pozycja,numCell):
flaga = 0
pozycjaTmp = (pozycja[0]+choice([-1,0,1]),pozycja[1]+choice([-1,0,1]),0)
for i in range( 0, len(lista) ):
if pozycjaTmp==lista[i].pos:
flaga=1
if flaga==1:
return poruszanie(lista,(pozycja[0]+choice([-1,0,1]),pozycja[1]+choice([-1,0,1]),0),numCell)
elif pozycjaTmp[0]==0 or pozycjaTmp[0]==numCell or pozycjaTmp[0]==-numCell or pozycjaTmp[1]==numCell or pozycjaTmp[1]==-numCell:
return poruszanie(lista,(pozycja[0]+choice([-1,0,1]),pozycja[1]+choice([-1,0,1]),0),numCell)
return pozycjaTmp
poruszanie - 函数名称
pozycja - 球体的位置
0,numCell,-numCell - 容器的边界(0 是中间的墙,用于分隔开始时的气体)
所有这些都在 x,y 平面上,z 始终为 0 这就是我开始使用这个函数的地方:
while 1:
rate(20)
for i in range(0,len(self.listBalls)):
self.listBalls[i].pos=poruszanie(self.listBalls,self.listBalls[i].pos,self.numCell)