如何解决重复后保存动画
如果已经为 Clifford attractor 实现了动画
xn+1 = sin(a yn) + c cos(a xn)
yn+1 = sin(b xn) + d cos(b yn)
动画会改变参数并通过移动的红色圆盘来表明这一点。
为了返回和移动,我引入了一个步进方向,每次达到 maxframes 时都会翻转该方向,即计数器的值为 0。
不幸的是,animate 函数似乎 - 或者被 - 总是被调用两次,为什么?
我已经解决了这个问题,现在是主要问题!
电影中只存储了一个 wy ...
a,b,c,d = -1.4,1.6,1.0,0.7 # Parameter
xmin,xmax,ymin,ymax=-2,2.5,-2,2
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation as ani
from timeit import default_timer as timer
fig,ax = plt.subplots(figsize=(6,6))
nmax=15000; x0,y0=xmin,ymin
XYc = np.zeros((nmax,3))
maxframes=200
deltax=(xmax-xmin)/maxframes
deltay=(ymax-ymin)/maxframes
Deltapar = 1
deltapar = 2*Deltapar/maxframes
amin,bmin,cmin,dmin = a-Deltapar,b-Deltapar,c-Deltapar,d-Deltapar
amax,bmax,cmax,dmax = a+Deltapar,b+Deltapar,c+Deltapar,d+Deltapar
from numba import jit
@jit
def iteration(a,d,x,y,XYc):
XYc[0]=x,x-x
for i in range(1,nmax):
x,y = np.sin(a*y) + c*np.cos(a*x),np.sin(b*x) + d*np.cos(b*y)
XYc[i]=x,i/nmax
iteration(a,x0,y0,XYc)
title='Clifford Attractor: a=%.2f,b=%.2f,c=%.2f,d=%.2f'%(a,d)
ax.set_title(title)
ax.set_xlim(xmin,xmax)
ax.set_ylim(ymin,ymax)
plt.tight_layout()
myCmap = plt.cm.get_cmap('gist_ncar_r')
dots,=ax.plot(XYc[:,0],XYc[:,1],",linewidth=0.1)
dotm,=ax.plot([xmin],[ymin],marker="o",color="r")
step=1
anicount=0
def animate(i):
global anicount,step
if i==0:
anicount+=1
if anicount%2==0: step = -step
print("#",anicount," ",step)
if step==1:
am=amin+i*deltapar
xm=xmin+i*deltax
ym=ymin+i*deltay
else:
am=amax-i*deltapar
xm=xmax-i*deltax
ym=ymax-i*deltay
iteration(am,XYc)
dots.set_data(XYc[:,1])
dotm.set_data([xm],[ym])
return dotm,dots,anim = ani.FuncAnimation(
fig,animate,frames=maxframes,interval=10,blit=True)
fname='cliffordattr'
#anim.save(fname+'.mp4')
#plt.savefig(fname+'.jpg')
#plt.savefig(fname+'.eps')
plt.show()
我曾尝试将 extra_anim=[...,...]
选项用于 savefig
anim1.save(fname+'1.mp4',fps=30)
anim2.save(fname+'2.mp4',fps=30)
anim1.save(fname+'12.mp4',fps=30,extra_anim=[anim1,anim2,])
但电影仍然只有一个方向。
- 如何在一部电影中保存多个动画周期???
- 如何在一部影片中保存不同的动画?
- 为什么 animate 会被调用两次?
感谢任何帮助
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。