Mobject
The defined distorting functions for
Mobject in mobject.py
- def wag(self, direction=RIGHT, axis=DOWN, wag_factor=1.0)
- def pose_at_angle(self, **kwargs)
- def put_start_and_end_on(self, start, end)
Distorting
def wag(self, direction=RIGHT, axis=DOWN, wag_factor=1.0)
def wag is used to deform a
Mobject with respect to the specified axis parameter, default axis is
DOWN, in the specified direction parametet, default direction is
RIGHT, according to the specified parameters.
def pose_at_angle(self, **kwargs)
def pose_at_angle is used to rotate a
Mobject about the center of the
Mobject, with respect to the specified axis parameter, default axis is
RIGHT + UP, with the specified angle parametet, default angle is
TAU / 14, according to the specified parameters.
def put_start_and_end_on(self, start, end)
def put_start_and_end_on is used to distort an open
Mobject by puting the start and end on the specified start parameter, start, and the specified end parameter, end, according to the specified parameters.
Example
Code
# folder/file: tut/manim_mobject_func_distorting_001a.py
from manimlib.scene.scene import Scene
from manimlib.mobject.geometry import Rectangle, Square, Circle, Line,RoundedRectangle
from manimlib.animation.creation import ShowCreation
from manimlib.mobject.svg.tex_mobject import TexMobject, TextMobject
from manimlib.animation.fading import FadeOut
from manimlib.animation.creation import Write
from manimlib.animation.transform import ApplyMethod, ApplyFunction
class manim_mobject_func_distorting_001a(Scene):
def construct(self):
linex=Line([2,2,0],[1,1,0],color="#88FF00")
polya= RoundedRectangle(width=2,height=2,corner_radius=0.5,stroke_width=0,fill_color="#FFFF00",fill_opacity=1)
polyb = Rectangle(width=2.5,height=1.5,stroke_width=15,color="#88FF00",fill_color="#FFFF00",fill_opacity=1)
polyc= Square(side_length=2,stroke_width=20,fill_color="#FF8800",fill_opacity=1).move_to([-3,-2,0])
polyd= Circle(arc_center=(-2,0.75,0),color="#888888")
polya.add(Rectangle(width=2,height=2,color="#77DDCC").move_to(polya))
polya.add(Rectangle(width=1,height=2.5,color="#77DDCC").move_to(polya))
polya.add(TextMobject("A").move_to(polya))
polye = Rectangle(width=1.25,height=3.75,color="#888888",fill_color="#333333",fill_opacity=1).move_to([-0.625,-1.125,0])
polyf= Rectangle(width=1,height=2,color="#888888").move_to([-2.5,-2,0])
self.play(ShowCreation(polyb),ShowCreation(polye),run_time=2)
self.wait()
self.play(ShowCreation(polyc),ShowCreation(polyf),run_time=2)
self.wait()
self.play(ShowCreation(polya.move_to(polyd)),ShowCreation(polyd),run_time=2)
self.wait()
self.add(TextMobject("B").move_to(polyb))
self.add(TextMobject("C").move_to(polyc))
self.add(TextMobject("E").move_to(polye))
self.add(linex)
self.add(Rectangle(width=14.22,height=8))
text=TexMobject(r"polya.wag()").move_to([0,3,0])
self.play(Write(text),ApplyFunction(lambda mob:mob.wag(),polya),run_time=3)
self.wait()
self.play(FadeOut(text),run_time=2)
text=TexMobject(r"polyc.pose\_at\_angle()").move_to([0,3,0])
self.play(Write(text),ApplyFunction(lambda mob:mob.pose_at_angle(),polyc),run_time=5)
self.wait()
self.play(FadeOut(text),run_time=2)
text=TexMobject(r"linex.put\_start\_and\_end\_on\\(start=polyc.get_center(),end=polyb.get_center())").move_to([0,3,0])
self.play(Write(text),ApplyFunction(lambda mob:mob.put_start_and_end_on(start=polyc.get_center(),end=polyb.get_center()),linex),run_time=3)
self.wait()
self.play(FadeOut(text),run_time=2)
Output