Transformation
Transformation is one kind of animation in Manim.
Types of Transformation
Types of Manim transformation are:
- Transform
- ClockwiseTransform
- CounterclockwiseTransform
- ReplacementTransform
- TransformFromCopy
- MoveToTarget
- CyclicReplace
- ApplyMethod
- ApplyPointwiseFunction
- ApplyPointwiseFunctionToCenter
- ApplyMatrix
- FadeToColor
- ScaleInPlace
- Restore
- ApplyComplexFunction
- specialized.MoveCar
- ApplyFunction
- TransformAnimations
Transformation Between Two Mobjects
Manim function to transform from one
Mobject to another
Mobject or vice versa. Both
ClockwiseTransform and
CounterclockwiseTransform transformations are used to specify argment of
path_arc parameter.
|
mobject |
target_mobject |
path_arc
|
path_arc_axis |
path_func |
replace_mobject_with_target_in_scene |
Transform |
|
None |
0 |
OUT |
None |
False |
ReplacementTransform |
|
|
|
|
|
True |
TransformFromCopy |
target_mobject |
mobject |
|
|
|
|
ClockwiseTransform |
|
|
-np.pi |
|
|
|
CounterclockwiseTransform |
|
|
np.pi |
|
|
|
MoveToTarget |
|
target_mobject |
|
|
|
|
Examples:
Transform, ReplacementTransform, TransformFromCopy, MoveToTarget
Code
# folder/file: tut/manim_animation_mobjectstransformation_001a.py
from manimlib.scene.scene import Scene
from manimlib.mobject.mobject import Group
from manimlib.mobject.geometry import Dot, Circle, Square
from manimlib.animation.creation import ShowCreation
from manimlib.animation.transform import Transform, ReplacementTransform, TransformFromCopy, MoveToTarget, ApplyMethod
from manimlib.mobject.svg.tex_mobject import TextMobject, TexMobject
from manimlib.animation.composition import AnimationGroup
class manim_animation_mobjectstransformation_001a(Scene):
def construct(self):
rows,cols=(9,5)
x0=[-4,*[2*i for i in range(cols-1)]]
y0=[3.5,*[2.5-0.8*i for i in range(rows-1)]]
txtx=["","loc 1","loc 2","m1 val","m2 val"]
for i in range(cols): self.add(TextMobject(txtx[i]).move_to(([x0[i],y0[0],0])))
xt=TextMobject(r"$\rightarrow$").move_to(([(x0[1]+x0[2])/2,y0[0],0]))
txty=["","Transform","","ReplacementTransform","","TransformFromCopy","","MoveToTarget",""]
for i in range(rows): self.add(TextMobject(txty[i]).move_to(([x0[0],y0[i],0])))
self.add(xt)
[[self.add(Dot().move_to(([x0[i],y0[j],0]))) for i in range(1,3)] for j in range(1,rows)]
d=Dot().set_width(0.0000001);a1=[d];a2=[d];a3=[d];a4=[d]
for j in range(1,rows):
a1.append(Circle().scale(0.2).move_to([x0[1],y0[j],0]))
a2.append(Square().scale(0.2).move_to([x0[2],y0[j],0]))
a3.append(a1[j].copy().move_to([x0[3],y0[j],0]).add_updater(lambda mob,obj=a1[j],x=x0[3],y=y0[j]:mob.become(obj.copy().move_to([x,y,0]))))
a4.append(a2[j].copy().move_to([x0[4],y0[j],0]).add_updater(lambda mob,obj=a2[j],x=x0[4],y=y0[j]:mob.become(obj.copy().move_to([x,y,0]))))
self.add(*a1[1::2],*a2[1::2])
self.add(*a3,*a4)
a1[7].target=a2[7]
a1[8].target=a2[8]
for obj in a1[1:]:
self.add(Square(stroke_width=2,color="#FFFF00").add_updater(lambda mob,obj=obj:mob.surround(obj,stretch=True,buff=0.2)))
for obj in a2[1:]:
self.add(Square(stroke_width=2,color="#DC75CD").add_updater(lambda mob,obj=obj:mob.surround(obj,stretch=True,buff=0.3)))
self.wait(2)
self.play(AnimationGroup(\
Transform(a1[1],a2[1]),\
Transform(a1[2],a2[2]),\
ReplacementTransform(a1[3],a2[3]),\
ReplacementTransform(a1[4],a2[4]),\
TransformFromCopy(a1[5],a2[5]),\
TransformFromCopy(a1[6],a2[6]),\
MoveToTarget(a1[7]),\
MoveToTarget(a1[8])\
),run_time=5)
self.wait(3)
Group(*a1).shift([0.3,0,0]).set_color("#11FF00")
self.wait(3)
self.play(ApplyMethod(Group(*a1).shift,([0.3,0,0])),run_time=3)
self.wait(10)
Output
Transformation of a Mobject
Manim function to transform a
Mobject.
|
mobject |
target_mobject |
path_arc
|
path_arc_axis |
path_func |
replace_mobject_with_target_in_scene |
Transform |
|
None |
0 |
OUT |
None |
False |
ApplyMethod |
|
|
|
|
|
|
ApplyPointwiseFunction |
|
|
|
|
|
|
ApplyPointwiseFunctionToCenter |
|
|
|
|
|
|
FadeToColor |
|
|
|
|
|
|
ScaleInPlace |
|
|
|
|
|
|
ShrinkToCenter |
|
|
|
|
|
|
Restore |
|
|
|
|
|
|
ApplyFunction |
|
|
|
|
|
|
ApplyMatrix |
|
|
|
|
|
|
ApplyComplexFunction |
|
|
|
|
|
|
Transformation of Animation Mobjects
|
mobject |
target_mobject |
path_arc
|
path_arc_axis |
path_func |
replace_mobject_with_target_in_scene |
Transform |
|
None |
0 |
OUT |
None |
False |
CyclicReplace |
*mobjects (target[-1],*target[:-1]) |
(self.group) |
90*DEGREES |
|
|
|
Swap |
*mobjects (target[-1],*target[:-1]) |
(self.group) |
90*DEGREES |
|
|
|
TransformAnimations |
start_anim (start_anim.mobject)
|
end_anim (end_anim.mobject) |
|
|
|
|