我有一个小问题,我正在 matplotlib 制作动画,而我正在使用 rotate_deg_around()功能。我的问题是我需要旋转我的对象,记住它的位置,并在下一步中旋转这个旋转的对象等。我的想法是我做了全局变量,我在其中存储实际数据(变量重影),我将使用我的绘图方法(drawMyObjects()),使用下一个方法updateGhost()更新它。 我的问题是,动画的速度正在下降,越来越慢。最后它冻结。 您怎么看?问题应该在哪里?我试过检查记忆,它看起来很好。 当我旋转oroginal对象时,它工作得很好(当我不需要记住新的旋转数据时) 我的问题是简单的方法 updateGhost(),因为没有使用它,它运行良好,但不是我需要的方式。 我将非常感谢您的帮助,谢谢大家 编辑1:运行时间较长时:运行时错误:超出最大递归深度不知道为什么......
def init():
line.set_data([], [])
return line,
ghost = ax.transData
def updateGhost(u):
global ghost
ghost=u
def drawMyObjects(i):
global ghost
td2dis = ax.transData
td2dis2=ghost
#1st Object
radius=getOnlyRadius(f1,f2)
rox,roy=setRotatePoint(radius,True)
coords = td2dis.transform([rox,roy])
tr = mpl.transforms.Affine2D().rotate_deg_around(coords[0], coords[1], 50*i/radius)
t = td2dis + tr
#2nd Object
radius2=radius+randomError(radius);
rox2,roy2=setRotatePoint(radius2,True)
coords2 = duch.transform([rox2,roy2])
tr2 = mpl.transforms.Affine2D().rotate_deg_around(coords2[0], coords2[1], 1.5)
u = td2dis2 + tr2
updateGhost(u)#it updates transData because I need to remember last position of my object
robotBody = patches.Rectangle((x,y),sirkaRobota,dlzkaRobota,color='black',alpha=0.5,transform=t)
ax.add_patch(robotBody)
robotBody2 = patches.Rectangle((x,y),sirkaRobota,dlzkaRobota,color='black',alpha=0.1,transform=u)
ax.add_patch(robotBody2)
return robotBody,robotBody2
anim = animation.FuncAnimation(fig, drawMyObjects, frames=10000,init_func=init, interval=20, blit=True)
答案 0 :(得分:0)
有两个主要问题:
1。)我使用递归计算矩阵(处理器终止)
2。)我没有删除添加的行(内存终止)