Animating Stacks¶
Manim Stack - MStack¶
In this section, you’ll find all the methods available to manipulate a MStack (short for Manim Stack 😄). Like all MObject structures, you can animate these methods using the .animate method, allowing you to animate each operation provided by Manim DSA.
Otherwise, methods will run without any animations.
You can also access each element in a MStack using the [] operator and specifying the element’s index.
Creating a MStack¶
To represent a stack, initialize an object of type MStack. As the first parameter, provide a list of values to insert into the MStack. Optionally, you can specify the distance between each element and customize the theme of the MStack (see Customizing a MStack).
Here’s an example that creates a MStack with a list of five numbers.
Example: Creation ¶
from manim import *
from manim_dsa import *
class Creation(Scene):
def construct(self):
mStack = MStack([1, 2, 3, 4, 5]).scale(0.7)
self.play(Create(mStack))
self.wait()
Customizing a MStack¶
ManimDSA provides various options for customizing the colors and styles of a MStack. You can use these options by passing a predefined style configuration from the MStackStyle class using the style parameter. Refer to MStackStyle for more details. Alternatively, you can define a custom style to suit your needs.
In the following example, we use the GREEN style for the MStack.
Example: CustomCreation ¶
from manim import *
from manim_dsa import *
class CustomCreation(Scene):
def construct(self):
mStack = MStack(
[1, 2, 3, 4, 5],
style=MStackStyle.GREEN
).scale(0.7)
self.play(Create(mStack))
self.wait()
Inserting an element to a MStack¶
The append() method allows you to insert an element in a MStack. The new element automatically inherits the properties specified in the configuration dictionaries.
In the example below, we create a MStack and then use the append() method to insert a new element.
Example: Append ¶
from manim import *
from manim_dsa import *
class Append(Scene):
def construct(self):
mStack = (
MStack(
[1, 2, 3, 4, 5],
style=MStackStyle.BLUE,
).scale(0.7)
)
self.play(Create(mStack))
self.play(mStack.animate.append(6))
self.wait()
Removing an element from a MStack¶
The pop() method allows you to remove the last element inserted in a MStack, as you can see in the example below.
Example: Pop ¶
from manim import *
from manim_dsa import *
class Pop(Scene):
def construct(self):
mStack = (
MStack(
[1, 2, 3, 4, 5],
style=MStackStyle.BLUE
)#.scale(0.7) for some strange reason it's not needed T_T
)
self.play(Create(mStack))
self.play(mStack.animate.pop())
self.wait()