これは、matplotlib
でアニメーションを行うために書いたプログラムです。このプログラムは、最初に六方格子で配列された18個の粒子からなるシステムに関する。初期構成は、simPoints(simData)
の定義で与えられています。Pythonのマルチボディアニメーションは静的なピクチャを返します
システムは、規則x[i]=x[i]+L/2.0
に従って、x方向およびy方向の両方向に進化しています。窓から出てくる粒子は反対側から持ち込まれます。これらの更新は、関数simData()
に記載されています。
しかし、このコードから抜け出すのは、パーティクルの初期設定の静的な画像です。
from numpy import*
import matplotlib.pyplot as plt
import matplotlib.animation as animation
L=1 # lattice constant = sigma*2**0.5 (Let)
x=zeros(18,float)
y=zeros(18,float)
#~~~~~~~~~~~~~~~~~ ANIMATION ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def simData():
t = 1
while t<=20:
for i in range(18):
x[i]=x[i]+L/2.0
y[i]=y[i]+L/2.0
if x[i]>L*3: # translate back the particle if it goes out of window limit 0 to L*cell
x[i]=x[i]-L*3
elif x[i]<0:
x[i]=L*3-x[i]
if y[i]>L*3: # translate back the particle if it goes out of window limit 0 to L*cell
y[i]=y[i]-L*3
elif y[i]<0:
y[i]=L*3-y[i]
t=t+1
yield x, y
def simPoints(simData):
k=0
for i in range(0,6,1):
for j in range(0,6,1):
if (i+j)%2==0:
x[k]=i*L*.5+.25*L
y[k]=j*L*.5+.25*L
k=k+1
line.set_data(x, y)
return line,
fig = plt.figure()
ax = fig.add_subplot(111)
line, = ax.plot(x, y,'bo', ms=8)
ax.set_ylim(0, L*3)
ax.set_xlim(0, L*3)
ani = animation.FuncAnimation(fig, simPoints, simData, blit=False, interval=100)
plt.show()
格子をアニメーション化するにはどうすればよいですか?私は、引数interval=100
が賢明に使われていないと感じています。
この質問は、私が昨日尋ねた別の質問の続きです。 @Reblochonによって私の主な混乱が取り除かれましたが、私の要求に合うようにプログラムを変更するのは難しかったので、私は再び尋ねなければなりませんでした。 – kanayamalakar