'How do I Apply Multiple Linear Transformations

I'm trying to use LinearTransformationScene's apply_matrix multiple times:

from manim import *

class LT(LinearTransformationScene):
    def __init__(self):
        super().__init__(
            self,
            show_coordinates=True,
            leave_ghost_vectors=True,
        )

    def construct(self):
        P     = [[1, 1], [1, -1]];
        D     = [[2, 0], [0, 0.5]];
        P_inv = [[0.5, 0.5], [0.5, 0.5]];

        self.apply_matrix(P);
        self.wait();

        self.apply_matrix(D);
        self.wait();

        self.apply_matrix(P_inv);
        self.wait();

But I get this error: submobjects must be of type VMobject.

I'm hoping to create an animation that:

  1. Applies the matrix P
  2. Pauses briefly
  3. Applies another matrix D
  4. Pauses briefly again
  5. And finally, applies the inverse of P, P_inv.

How do I accomplish this? There were similar questions posted, but no one posted about this specific error.



Solution 1:[1]

These specialized Scene classes are unfortunately not very well maintained, this is a known issue. There is a simple workaround though: after calling self.apply_matrix, add

self.moving_mobjects = []

and the next application of apply_matrix will work as intended again.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Benjamin Hackl