在matplotlib python中减慢动画速度

时间:2014-01-22 22:47:33

标签: python animation recursion matplotlib global-variables

我有一个小问题,我正在 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)

1 个答案:

答案 0 :(得分:0)

有两个主要问题:

1。)我使用递归计算矩阵(处理器终止)

2。)我没有删除添加的行(内存终止)