我在matplotlib动画中使用翻译,我每20毫秒调用一次方法drawObject()。我的问题是,td2dis(当我打印它时)由第一个方法调用中的一些数据和1个Matrix组成。在第二次调用中,它的数据和2个矩阵。等等。所以当我在N号方法调用时,我有N个矩阵。他们递归地工作。而且由于这种递归,我的动画在几秒后死亡。在这里有任何建立的可能性,如何计算(可能只是乘法?)这些矩阵?或者将它们减少到只有1? 所以我希望变换转换对象而不递归。有可能吗?
td2dis = ax.transData
def drawObjects():
global td2dis
...
tr = mpl.transforms.Affine2D().rotate_deg_around(coords[0], coords[1], angle)
t=td2dis+tr
td2dis=t
...
带有矩阵的印刷变量td2dis,第一种方法调用中有数据
CompositeGenericTransform(TransformWrapper(BlendedAffine2D(IdentityTransform(),IdentityTransform())), CompositeGenericTransform(BboxTransformFrom(TransformedBbox(Bbox('array([[ -19.5 , -10.7983871],\n [ 221.5 , 140.7983871]])'), TransformWrapper(BlendedAffine2D(IdentityTransform(),IdentityTransform())))), BboxTransformTo(TransformedBbox(Bbox('array([[ 0.125, 0.25 ],\n [ 0.9 , 0.9 ]])'), BboxTransformTo(TransformedBbox(Bbox('array([[ 0., 0.],\n [ 8., 6.]])'), Affine2D(array([[ 80., 0., 0.],
[ 0., 80., 0.],
[ 0., 0., 1.]]))))))))
使用带有第4步数据的矩阵打印td2dis
CompositeGenericTransform(CompositeGenericTransform(CompositeGenericTransform(CompositeGenericTransform(CompositeGenericTransform(TransformWrapper(BlendedAffine2D(IdentityTransform(),IdentityTransform())), CompositeGenericTransform(BboxTransformFrom(TransformedBbox(Bbox('array([[ -19.5 , -10.7983871],\n [ 221.5 , 140.7983871]])'), TransformWrapper(BlendedAffine2D(IdentityTransform(),IdentityTransform())))), BboxTransformTo(TransformedBbox(Bbox('array([[ 0.125, 0.25 ],\n [ 0.9 , 0.9 ]])'), BboxTransformTo(TransformedBbox(Bbox('array([[ 0., 0.],\n [ 8., 6.]])'), **Affine2D(array(**[[ 80., 0., 0.],
[ 0., 80., 0.],
[ 0., 0., 1.]])))))))), Affine2D(array([[ 0.99968918, -0.02493069, 6.97023765],
[ 0.02493069, 0.99968918, -7.08231365],
[ 0. , 0. , 1. ]]))), Affine2D(array([[ 0.99968918, -0.02493069, 6.99869385],
[ 0.02493069, 0.99968918, -7.84282183],
[ 0. , 0. , 1. ]]))), Affine2D(array([[ 0.99968918, -0.02493069, 6.94884054],
[ 0.02493069, 0.99968918, -7.04407025],
[ 0. , 0. , 1. ]]))), Affine2D(array([[ 0.99968918, -0.02493069, 6.94929398],
[ 0.02493069, 0.99968918, -7.04925306],
[ 0. , 0. , 1. ]])))
答案 0 :(得分:1)
解决了,tr有方法set_matrix和get_matrix