├── README.md ├── mobjects.py └── animations.py /README.md: -------------------------------------------------------------------------------- 1 | # Manim-Mobjects-and-Animations 2 | 3 | ## Overview 4 | 5 | Manim is an open-source python library for generating videos of Mathematical Visualizations. 6 | 7 | This repo contains code that showcases two of Manim's fundamental resources: 8 | 1. MObjects - the objects that you can move around and transform 9 | 2. Animations - the different things you can do to the MObjects (moving them around, transforming them, etc.) 10 | 11 | [mobjects.py](./mobjects.py) contains code that shows almost all of the mobjects. It shows them one after another with the name at the top. [animations.py](./animations.py) is the same but for almost all of the animations. 12 | 13 | You can use the code as a reference for very simple examples. The Manim Community also has documentation on their website [here (Manim Community)](https://docs.manim.community/en/stable/reference.html). 14 | 15 | 16 | ## Watch On [My YouTube Channel](https://www.youtube.com/channel/UC3xlS5T2M6we94bCsYneNXA): 17 | 18 | ### 56 Manim Mobjects in ONE Video 19 | 20 | Watch on Youtube 21 | 22 | 23 | ### 88 Manim Animations in ONE Video 24 | 25 | Watch on Youtube 26 | 27 | 28 | 29 | ## Running the Code 30 | You need to have python and manim set up on your computer. Please search for documentation for [setting up Python](https://www.youtube.com/watch?v=M323OL6K5vs) and visit the [Manim Community website to install Manim](https://docs.manim.community/en/stable/installation.html). 31 | 32 | Here are the versions I am using: 33 | ``` 34 | $ python --version 35 | Python 3.10.0 36 | 37 | $ manim --version 38 | Manim Community v0.17.3 39 | ``` 40 | 41 | These commands will generate each of the videos if you run them in your Terminal: 42 | ``` 43 | $ manim -pql mobjects.py 44 | $ manim -pql animations.py 45 | ``` 46 | -------------------------------------------------------------------------------- /mobjects.py: -------------------------------------------------------------------------------- 1 | from manim import * 2 | import numpy as np 3 | 4 | class AllMObjects(ThreeDScene): 5 | def construct(self): 6 | t = Text("Manim Objects") 7 | t.shift(UP*2.5) 8 | 9 | mobject_list = [ 10 | # Geometry 11 | Annulus(), 12 | AnnularSector(), 13 | Arc(), 14 | Circle(), 15 | Dot(), 16 | Ellipse(), 17 | Arrow(), 18 | Vector(), 19 | Square(), 20 | Star(), 21 | Triangle(), 22 | ArrowCircleTip(), 23 | 24 | # Frame 25 | FullScreenRectangle(), 26 | ScreenRectangle(), 27 | 28 | # Graph 29 | Graph(vertices=(1,2,3,4,5), edges=[(1,2), (1,3), (4,2), (3,5), (1,5)]), 30 | 31 | # Graphing 32 | Axes(), 33 | ComplexPlane(), 34 | CoordinateSystem(), 35 | NumberPlane(), 36 | FunctionGraph(lambda x: (-1.0*x)**2), 37 | NumberLine(), 38 | BarChart(values=[1,2,3,4,5]), 39 | 40 | # Logo 41 | ManimBanner(), 42 | 43 | # Matrix 44 | DecimalMatrix([[1.0,2.0],[3.0,4.0]]), 45 | IntegerMatrix([[1,2],[3,4]]), 46 | Matrix([[1,2],[3,4]]), 47 | MobjectMatrix([[Circle(),Square()],[Star(),Triangle()]]), 48 | 49 | # Table 50 | DecimalTable([[1,2,3,4], [5,6,7,8]], row_labels=[Text("Row 1"), Text("Row 2")]), 51 | MathTable([["+", 0, 5, 10],[0, 0, 5, 10],[2, 2, 7, 12],[4, 4, 9, 14]],include_outer_lines=True), 52 | MobjectTable( [ [Circle(), Square()] , [Triangle(), Star()] ] ), 53 | 54 | # Text 55 | Code(file_name="dummy.py", language="Python"), 56 | DecimalNumber(5.5), 57 | Integer(5), 58 | BulletedList("Apple", "Pear", "Grape"), 59 | MathTex(r"\frac{a}{b} = x^{2}"), 60 | SingleStringMathTex(r"\frac{a}{b} = x^{2}"), 61 | Tex("Hello World"), 62 | Title("Here Is a Ttitle"), 63 | MarkupText('Red text is fire!"'), 64 | Paragraph('There once was a man', 'that lived in a van', 'with only one right hand'), 65 | Text("Here is Text"), 66 | 67 | # Types 68 | Point(color=RED), 69 | PointCloudDot(), 70 | ] 71 | 72 | mobject_list_3d = [ 73 | ThreeDAxes(), 74 | Dodecahedron(), 75 | Icosahedron(), 76 | Octahedron(), 77 | Tetrahedron(edge_length=2), 78 | Arrow3D(), 79 | Cone(), 80 | Cube(), 81 | Cylinder(), 82 | Dot3D(), 83 | Line3D(start=np.array([-3,-3,-3]), end=np.array([3,3,3])), 84 | Prism(), 85 | Sphere(), 86 | Torus(), 87 | ] 88 | 89 | # Show all 2D MObjects 90 | self.add(t) 91 | self.wait(0.2) 92 | for mobj in mobject_list: 93 | try: 94 | self.play(Transform(t,Text(mobj.name).shift(UP*2.5)), FadeIn(mobj), run_time=0.5) 95 | self.wait(0.5) 96 | self.remove(mobj) 97 | except: 98 | continue 99 | 100 | # Show all 3D MObjects 101 | self.play(Transform(t,Text("Looking at 3D Mobjects...").shift(UP*2.5)), run_time=0.5) 102 | self.wait(1) 103 | 104 | self.begin_3dillusion_camera_rotation(rate=4) 105 | self.wait(2) 106 | 107 | for mobj in mobject_list_3d: 108 | try: 109 | self.play(Transform(t,Text(mobj.name).shift(UP*2.5)), FadeIn(mobj), run_time=0.5) 110 | self.wait(1) 111 | self.remove(mobj) 112 | except: 113 | continue 114 | self.play(FadeOut(t)) 115 | self.wait() 116 | -------------------------------------------------------------------------------- /animations.py: -------------------------------------------------------------------------------- 1 | from manim import * 2 | import numpy as np 3 | 4 | class AllAnimations(Scene): 5 | def construct(self): 6 | text = Text("Animations").shift(UP*2.5) 7 | self.play(Write(text)) 8 | self.wait(1) 9 | 10 | self.play(Transform(text,Text("Create").shift(UP*2.5)), run_time=0.5) 11 | start = Star() 12 | self.play(Create(start)) 13 | self.play(Transform(text,Text("Uncreate").shift(UP*2.5)), run_time=0.5) 14 | self.play(Uncreate(start)) 15 | 16 | self.play(Transform(text,Text("AnimatedBoundary").shift(UP*2.5)), run_time=0.5) 17 | circle = Circle() 18 | animated_boundary = AnimatedBoundary(circle, cycle_rate=3, colors=[RED, GREEN, BLUE]) 19 | self.add(circle, animated_boundary) 20 | self.wait(2) 21 | self.remove(circle, animated_boundary) 22 | 23 | self.play(Transform(text,Text("TracedPath").shift(UP*2.5)), run_time=0.5) 24 | dot = Dot(color=RED) 25 | trace = TracedPath(dot.get_center) 26 | self.add(dot, trace) 27 | self.wait(0.5) 28 | self.play(dot.animate.shift(UP), run_time=0.5) 29 | self.play(dot.animate.shift(LEFT), run_time=0.5) 30 | self.play(dot.animate.shift(DOWN+RIGHT), run_time=0.5) 31 | self.remove(dot, trace) 32 | 33 | self.play(Transform(text,Text("AddTextLetterByLetter").shift(UP*2.5)), run_time=0.5) 34 | some_text = Text("Here is a text") 35 | self.play(AddTextLetterByLetter(some_text)) 36 | self.play(Transform(text,Text("RemoveTextLetterByLetter").shift(UP*2.5)), run_time=0.5) 37 | self.play(RemoveTextLetterByLetter(some_text)) 38 | 39 | self.play(Transform(text,Text("Write").shift(UP*2.5)), run_time=0.5) 40 | some_text = Text("Here is more text") 41 | self.play(Write(some_text)) 42 | self.play(Transform(text,Text("Unwrite").shift(UP*2.5)), run_time=0.5) 43 | self.play(Unwrite(some_text)) 44 | self.remove(some_text) 45 | 46 | self.play(Transform(text,Text("DrawBorderThenFill").shift(UP*2.5)), run_time=0.5) 47 | square = Square(color=BLUE, fill_opacity=1).set_fill(YELLOW) 48 | self.play(DrawBorderThenFill(square)) 49 | self.remove(square) 50 | 51 | self.play(Transform(text,Text("ShowIncreasingSubsets").shift(UP*2.5)), run_time=0.5) 52 | circles = VGroup( 53 | Circle().shift(UP*0.5), 54 | Circle().shift((DOWN+LEFT)*0.5), 55 | Circle().shift((DOWN+RIGHT)*0.5) 56 | ) 57 | self.play(ShowIncreasingSubsets(circles)) 58 | self.wait() 59 | self.remove(circles) 60 | 61 | self.play(Transform(text,Text("ShowSubmobjectsOneByOne").shift(UP*2.5)), run_time=0.5) 62 | circles2 = VGroup( 63 | Circle().shift(UP*0.5), 64 | Circle().shift((DOWN+LEFT)*0.5), 65 | Circle().shift((DOWN+RIGHT)*0.5) 66 | ) 67 | self.play(ShowSubmobjectsOneByOne(circles2)) 68 | self.play(Uncreate(circles2)) 69 | 70 | self.play(Transform(text,Text("FadeIn").shift(UP*2.5)), run_time=0.5) 71 | square = Square() 72 | self.play(FadeIn(square)) 73 | self.play(Transform(text,Text("FadeOut").shift(UP*2.5)), run_time=0.5) 74 | self.play(FadeOut(square)) 75 | self.remove(square) 76 | 77 | self.play(Transform(text,Text("GrowArrow").shift(UP*2.5)), run_time=0.5) 78 | arrow = Arrow() 79 | self.play(GrowArrow(arrow)) 80 | self.remove(arrow) 81 | 82 | self.play(Transform(text,Text("GrowFromCenter").shift(UP*2.5)), run_time=0.5) 83 | triangle = Triangle() 84 | self.play(GrowFromCenter(triangle)) 85 | self.remove(triangle) 86 | 87 | self.play(Transform(text,Text("GrowFromEdge - DOWN").shift(UP*2.5)), run_time=0.5) 88 | squares = [Square() for _ in range(4)] 89 | self.play(GrowFromEdge(squares[0], DOWN)) 90 | self.play(Transform(text,Text("GrowFromEdge - RIGHT").shift(UP*2.5)), run_time=0.5) 91 | self.play(GrowFromEdge(squares[1], RIGHT)) 92 | self.play(Transform(text,Text("GrowFromEdge - UP").shift(UP*2.5)), run_time=0.5) 93 | self.play(GrowFromEdge(squares[2], UP)) 94 | self.play(Transform(text,Text("GrowFromEdge - LEFT").shift(UP*2.5)), run_time=0.5) 95 | self.play(GrowFromEdge(squares[3], LEFT)) 96 | self.remove(*squares) 97 | 98 | self.play(Transform(text,Text("GrowFromPoint").shift(UP*2.5)), run_time=0.5) 99 | dot = Dot().shift(UP+RIGHT*2) 100 | star = Star() 101 | self.add(dot) 102 | self.wait(0.5) 103 | self.play(GrowFromPoint(star, dot)) 104 | self.remove(dot, star) 105 | 106 | self.play(Transform(text,Text("SpinInFromNothing").shift(UP*2.5)), run_time=0.5) 107 | triangle = Triangle() 108 | self.play(SpinInFromNothing(triangle)) 109 | self.remove(triangle) 110 | 111 | self.play(Transform(text,Text("ApplyWave").shift(UP*2.5)), run_time=0.5) 112 | some_text = Text("Mathematical Animations") 113 | self.play(ApplyWave(some_text)) 114 | self.play(ApplyWave(some_text, direction=RIGHT)) 115 | self.remove(some_text) 116 | 117 | self.play(Transform(text,Text("Circumscribe").shift(UP*2.5)), run_time=0.5) 118 | some_text = Text("Look Here") 119 | self.add(some_text) 120 | self.play(Circumscribe(some_text)) 121 | self.play(Circumscribe(some_text, Circle)) 122 | self.remove(some_text) 123 | 124 | self.play(Transform(text,Text("Flash").shift(UP*2.5)), run_time=0.5) 125 | some_text = Text("Ta Da").set_color(YELLOW) 126 | self.add(some_text) 127 | self.play(Flash(some_text)) 128 | self.remove(some_text) 129 | 130 | self.play(Transform(text,Text("FocusOn").shift(UP*2.5)), run_time=0.5) 131 | some_text = Text("Here!") 132 | self.add(some_text) 133 | self.play(FocusOn(some_text)) 134 | self.remove(some_text) 135 | 136 | self.play(Transform(text,Text("Indicate").shift(UP*2.5)), run_time=0.5) 137 | some_text = Text("This is important") 138 | self.play(Indicate(some_text)) 139 | self.remove(some_text) 140 | 141 | self.play(Transform(text,Text("Wiggle").shift(UP*2.5)), run_time=0.5) 142 | some_text = Text("THIS") 143 | self.play(Wiggle(some_text)) 144 | self.remove(some_text) 145 | 146 | self.play(Transform(text,Text("ShowPassingFlash").shift(UP*2.5)), run_time=0.5) 147 | square = Square() 148 | self.play(ShowPassingFlash(square)) 149 | self.remove(square) 150 | 151 | self.play(Transform(text,Text("ShowPassingFlashWithThinningStrokeWidth").shift(UP*2.5)), run_time=0.5) 152 | square = Square() 153 | self.play(ShowPassingFlashWithThinningStrokeWidth(square)) 154 | self.remove(square) 155 | 156 | self.play(Transform(text,Text("MoveAlongPath").shift(UP*2.5)), run_time=0.5) 157 | l1 = Line(LEFT+DOWN, RIGHT+UP) 158 | self.add(l1) 159 | d1 = Dot().shift(LEFT+DOWN) 160 | self.play(Create(d1), run_time=0.5) 161 | self.play(MoveAlongPath(d1, l1), rate_func=linear) 162 | self.remove(l1,d1) 163 | 164 | self.play(Transform(text,Text("Rotate").shift(UP*2.5)), run_time=0.5) 165 | star = Star() 166 | self.play(Rotate(star)) 167 | self.wait(0.5) 168 | self.remove(star) 169 | 170 | self.play(Transform(text,Text("Rotating").shift(UP*2.5)), run_time=0.5) 171 | square = Square() 172 | self.play(Rotating(square)) 173 | self.wait(0.5) 174 | self.remove(square) 175 | 176 | self.play(Transform(text,Text("Broadcast").shift(UP*2.5)), run_time=0.5) 177 | triangle = Triangle() 178 | self.play(Broadcast(triangle)) 179 | self.remove(triangle) 180 | 181 | self.play(Transform(text,Text("ChangeSpeed").shift(UP*2.5)), run_time=0.5) 182 | d = Dot().shift(LEFT) 183 | self.play(ChangeSpeed(d.animate.shift(RIGHT*2), speedinfo={0.3: 1, 0.4: 0.1, 0.6: 0.1, 1: 1}, rate_func=linear)) 184 | self.remove(d) 185 | 186 | self.play(Transform(text,Text("Transform").shift(UP*2.5)), run_time=0.5) 187 | square = Square() 188 | star = Star() 189 | self.play(Transform(square,star)) 190 | self.remove(square,star) 191 | 192 | self.play(Transform(text,Text("ClockwiseTransform").shift(UP*2.5)), run_time=0.5) 193 | square = Square() 194 | star = Star() 195 | self.play(ClockwiseTransform(square,star)) 196 | self.remove(square,star) 197 | 198 | self.play(Transform(text,Text("CounterclockwiseTransform").shift(UP*2.5)), run_time=0.5) 199 | square = Square() 200 | star = Star() 201 | self.play(CounterclockwiseTransform(square,star)) 202 | self.remove(square,star) 203 | 204 | self.play(Transform(text,Text("CyclicReplace").shift(UP*2.5)), run_time=0.5) 205 | square = Square() 206 | star = Star() 207 | circle = Circle() 208 | triangle = Triangle() 209 | vg = VGroup(square,star,circle,triangle) 210 | vg.arrange(RIGHT) 211 | self.play(CyclicReplace(*vg)) 212 | self.wait() 213 | self.remove(square,star,circle,triangle) 214 | 215 | self.play(Transform(text,Text("FadeToColor").shift(UP*2.5)), run_time=0.5) 216 | square = Square(fill_opacity=1).set_fill(RED) 217 | self.play(FadeToColor(square,color=YELLOW)) 218 | self.remove(square) 219 | 220 | self.play(Transform(text,Text("FadeTransform").shift(UP*2.5)), run_time=0.5) 221 | square = Square(fill_opacity=1).set_fill(BLUE) 222 | star = Star(fill_opacity=1).set_fill(YELLOW) 223 | self.play(FadeTransform(square,star)) 224 | self.remove(square,star) 225 | 226 | self.play(Transform(text,Text("MoveToTarget").shift(UP*2.5)), run_time=0.5) 227 | circle = Circle().shift(LEFT) 228 | circle.generate_target() 229 | circle.move_to(RIGHT) 230 | self.play(MoveToTarget(circle)) 231 | self.remove(circle) 232 | 233 | self.play(Transform(text,Text("ReplacementTransform").shift(UP*2.5)), run_time=0.5) 234 | circle = Circle().shift(LEFT) 235 | square = Square().shift(RIGHT) 236 | self.play(ReplacementTransform(circle,square)) 237 | self.remove(circle,square) 238 | 239 | self.play(Transform(text,Text("Restore").shift(UP*2.5)), run_time=0.5) 240 | circle = Circle() 241 | square = Square(fill_opacity=1).set_fill(RED).shift(DOWN+RIGHT) 242 | self.play(Create(circle), run_time=0.5) 243 | circle.save_state() 244 | self.wait(0.5) 245 | self.play(Transform(circle,square), run_time=0.3) 246 | self.play(circle.animate.shift(RIGHT), run_time=0.3) 247 | self.play(circle.animate.rotate(0.5), run_time=0.4) 248 | self.wait(0.5) 249 | self.play(Restore(circle)) 250 | self.wait(0.2) 251 | self.remove(circle,square) 252 | 253 | self.play(Transform(text,Text("ScaleInPlace").shift(UP*2.5)), run_time=0.5) 254 | square = Square() 255 | self.play(ScaleInPlace(square, scale_factor=2)) 256 | self.remove(square) 257 | 258 | self.play(Transform(text,Text("ShrinkToCenter").shift(UP*2.5)), run_time=0.5) 259 | square = Square() 260 | self.play(ShrinkToCenter(square)) 261 | self.remove(square) 262 | 263 | self.play(Transform(text,Text("TransformMatchingShapes").shift(UP*2.5)), run_time=0.5) 264 | source_text = Text("tom marvolo riddle") 265 | dest_text = Text("lord voldemort") 266 | self.play(Write(source_text)) 267 | self.wait(0.5) 268 | self.play(TransformMatchingShapes(source_text, dest_text, path_arc=PI/2)) 269 | self.wait(0.5) 270 | self.remove(source_text,dest_text) 271 | 272 | self.play(Transform(text,Text("TransformMatchingTex").shift(UP*2.5)), run_time=0.5) 273 | eq1 = MathTex("{{a}}^2", "+", "{{b}}^2", "=", "{{c}}^2") 274 | eq2 = MathTex("{{a}}^2", "+", "-{{c}}^2", "=", "-{{b}}^2") 275 | self.add(eq1) 276 | self.wait(0.5) 277 | self.play(TransformMatchingTex(eq1, eq2, path_arc=PI/2)) 278 | self.wait(0.5) 279 | self.remove(eq1,eq2) 280 | 281 | self.play(Transform(text,Text("animate.shift").shift(UP*2.5)), run_time=0.5) 282 | circle = Circle() 283 | self.play(circle.animate.shift(UP), run_time=0.5) 284 | self.play(circle.animate.shift(DOWN), run_time=0.5) 285 | self.play(circle.animate.shift(LEFT), run_time=0.5) 286 | self.play(circle.animate.shift(RIGHT), run_time=0.5) 287 | self.remove(circle) 288 | 289 | self.play(Transform(text,Text("animate.set_fill").shift(UP*2.5)), run_time=0.5) 290 | square = Square(fill_opacity=1) 291 | self.play(square.animate.set_fill(RED)) 292 | self.remove(square) 293 | 294 | self.play(Transform(text,Text("animate.rotate").shift(UP*2.5)), run_time=0.5) 295 | triangle = Triangle(fill_opacity=1) 296 | self.play(triangle.animate.rotate(PI)) 297 | self.remove(triangle) 298 | 299 | self.play(Transform(text,Text("animate.scale").shift(UP*2.5)), run_time=0.5) 300 | square = Square() 301 | self.play(square.animate.scale(scale_factor=1.5)) 302 | self.remove(square) 303 | 304 | self.play(Transform(text,Text("animate.rotate_about_origin").shift(UP*2.5)), run_time=0.5) 305 | star = Star().shift(RIGHT*2) 306 | self.play(star.animate.rotate_about_origin(PI)) 307 | self.remove(star) 308 | 309 | self.play(Transform(text,Text("animate.rotate").shift(UP*2.5)), run_time=0.5) 310 | triangle = Triangle() 311 | self.play(triangle.animate.rotate(PI)) 312 | self.remove(triangle) 313 | 314 | self.play(Transform(text,Text("animate.flip").shift(UP*2.5)), run_time=0.5) 315 | triangle = Triangle() 316 | self.play(triangle.animate.flip()) 317 | self.remove(triangle) 318 | 319 | self.play(Transform(text,Text("animate.stretch").shift(UP*2.5)), run_time=0.5) 320 | circle = Circle() 321 | self.play(circle.animate.stretch(2,1)) 322 | self.remove(circle) 323 | 324 | self.play(Transform(text,Text("animate.wag").shift(UP*2.5)), run_time=0.5) 325 | square = Square() 326 | self.play(square.animate.wag()) 327 | self.remove(square) 328 | 329 | self.play(Transform(text,Text("animate.pose_at_angle").shift(UP*2.5)), run_time=0.5) 330 | square = Square() 331 | self.play(square.animate.pose_at_angle()) 332 | self.remove(square) 333 | 334 | self.play(Transform(text,Text("animate.center").shift(UP*2.5)), run_time=0.5) 335 | square = Square().shift(LEFT*2) 336 | self.play(square.animate.center()) 337 | self.remove(square) 338 | 339 | self.play(Transform(text,Text("animate.align_on_border").shift(UP*2.5)), run_time=0.5) 340 | square = Square().shift(LEFT*2) 341 | self.play(square.animate.align_on_border(direction=np.array([0,1,0]))) 342 | self.remove(square) 343 | 344 | self.play(Transform(text,Text("animate.to_corner").shift(UP*2.5)), run_time=0.5) 345 | square = Square().shift(LEFT*2) 346 | self.play(square.animate.to_corner()) 347 | self.remove(square) 348 | 349 | self.play(Transform(text,Text("animate.to_edge").shift(UP*2.5)), run_time=0.5) 350 | square = Square().shift(LEFT*2) 351 | self.play(square.animate.to_edge()) 352 | self.remove(square) 353 | 354 | self.play(Transform(text,Text("animate.next_to").shift(UP*2.5)), run_time=0.5) 355 | dot = Dot().shift((RIGHT+UP)*2) 356 | square = Square().shift(LEFT*2) 357 | self.add(dot) 358 | self.play(square.animate.next_to(dot)) 359 | self.remove(square,dot) 360 | 361 | self.play(Transform(text,Text("animate.scale_to_fit_width").shift(UP*2.5)), run_time=0.5) 362 | square = Square() 363 | self.play(square.animate.scale_to_fit_width(5)) 364 | self.remove(square) 365 | 366 | self.play(Transform(text,Text("animate.stretch_to_fit_width").shift(UP*2.5)), run_time=0.5) 367 | square = Square() 368 | self.play(square.animate.stretch_to_fit_width(5)) 369 | self.remove(square) 370 | 371 | self.play(Transform(text,Text("animate.scale_to_fit_height").shift(UP*2.5)), run_time=0.5) 372 | square = Square() 373 | self.play(square.animate.scale_to_fit_height(3)) 374 | self.remove(square) 375 | 376 | self.play(Transform(text,Text("animate.stretch_to_fit_height").shift(UP*2.5)), run_time=0.5) 377 | square = Square() 378 | self.play(square.animate.stretch_to_fit_height(3)) 379 | self.remove(square) 380 | 381 | self.play(Transform(text,Text("animate.set_coord").shift(UP*2.5)), run_time=0.5) 382 | square = Square() 383 | self.play(square.animate.set_coord(-1,0)) 384 | self.remove(square) 385 | 386 | self.play(Transform(text,Text("animate.set_x").shift(UP*2.5)), run_time=0.5) 387 | square = Square() 388 | self.play(square.animate.set_x(-1)) 389 | self.remove(square) 390 | 391 | self.play(Transform(text,Text("animate.set_y").shift(UP*2.5)), run_time=0.5) 392 | square = Square() 393 | self.play(square.animate.set_y(-1)) 394 | self.remove(square) 395 | 396 | self.play(Transform(text,Text("animate.space_out_submobjects").shift(UP*2.5)), run_time=0.5) 397 | circle = Circle() 398 | star = Star() 399 | circle.add(star) 400 | self.play(circle.animate.space_out_submobjects(factor=2)) 401 | self.remove(circle,star) 402 | 403 | self.play(Transform(text,Text("animate.move_to").shift(UP*2.5)), run_time=0.5) 404 | circle = Circle() 405 | self.play(circle.animate.move_to(RIGHT+UP)) 406 | self.remove(circle) 407 | 408 | self.play(Transform(text,Text("animate.replace").shift(UP*2.5)), run_time=0.5) 409 | circle = Circle().shift(LEFT) 410 | star = Star().shift(RIGHT) 411 | self.add(circle, star) 412 | self.play(circle.animate.replace(star)) 413 | self.remove(circle,star) 414 | 415 | self.play(Transform(text,Text("animate.surround").shift(UP*2.5)), run_time=0.5) 416 | circle = Circle().shift(LEFT) 417 | star = Star().shift(RIGHT) 418 | self.add(circle,star) 419 | self.play(circle.animate.surround(star)) 420 | self.remove(circle,star) 421 | 422 | self.play(Transform(text,Text("animate.add_background_rectangle").shift(UP*2.5)), run_time=0.5) 423 | square = Square() 424 | self.add(square) 425 | self.play(square.animate.add_background_rectangle()) 426 | self.remove(square) 427 | 428 | self.play(Transform(text,Text("animate.set_color").shift(UP*2.5)), run_time=0.5) 429 | square = Square(fill_opacity=1) 430 | self.add(square) 431 | self.play(square.animate.set_color(BLUE)) 432 | self.remove(square) 433 | 434 | self.play(Transform(text,Text("animate.set_color_by_gradient").shift(UP*2.5)), run_time=0.5) 435 | square = Square(fill_opacity=1) 436 | self.add(square) 437 | self.play(square.animate.set_color_by_gradient(RED,BLUE,YELLOW)) 438 | self.remove(square) 439 | 440 | self.play(Transform(text,Text("animate.fade_to").shift(UP*2.5)), run_time=0.5) 441 | square = Square(fill_opacity=1).set_fill(RED) 442 | self.add(square) 443 | self.play(square.animate.fade_to(GREEN, 0.5)) 444 | self.remove(square) 445 | 446 | self.play(Transform(text,Text("animate.fade").shift(UP*2.5)), run_time=0.5) 447 | square = Square(fill_opacity=1).set_fill(RED) 448 | self.add(square) 449 | self.play(square.animate.fade()) 450 | self.remove(square) 451 | 452 | self.play(Transform(text,Text("animate.match_color").shift(UP*2.5)), run_time=0.5) 453 | circle = Circle(fill_opacity=1).set_fill(RED).shift(LEFT*2) 454 | square = Square(fill_opacity=1).shift(RIGHT*2) 455 | self.add(circle) 456 | self.play(Create(square)) 457 | self.play(square.animate.match_color(circle)) 458 | self.remove(square,circle) 459 | 460 | self.play(Transform(text,Text("animate.match_dim_size").shift(UP*2.5)), run_time=0.5) 461 | circle = Circle().scale(2) 462 | square = Square() 463 | self.add(circle,square) 464 | self.play(square.animate.match_dim_size(circle, 0)) 465 | self.remove(square,circle) 466 | 467 | self.play(Transform(text,Text("animate.match_width").shift(UP*2.5)), run_time=0.5) 468 | circle = Circle().scale(2) 469 | square = Square() 470 | self.add(circle,square) 471 | self.play(square.animate.match_width(circle)) 472 | self.remove(square,circle) 473 | 474 | self.play(Transform(text,Text("animate.match_height").shift(UP*2.5)), run_time=0.5) 475 | circle = Circle().scale(2) 476 | square = Square() 477 | self.add(circle,square) 478 | self.play(square.animate.match_height(circle)) 479 | self.remove(square,circle) 480 | 481 | self.play(Transform(text,Text("animate.match_x").shift(UP*2.5)), run_time=0.5) 482 | dot = Dot().shift((LEFT+UP)*2) 483 | star = Star() 484 | self.add(dot,star) 485 | self.play(star.animate.match_x(dot)) 486 | self.remove(star,dot) 487 | 488 | self.play(Transform(text,Text("animate.match_y").shift(UP*2.5)), run_time=0.5) 489 | dot = Dot().shift((LEFT+UP)*2) 490 | star = Star() 491 | self.add(dot,star) 492 | self.play(star.animate.match_y(dot)) 493 | self.remove(star,dot) 494 | 495 | self.play(Transform(text,Text("animate.arrange").shift(UP*2.5)), run_time=0.5) 496 | t1 = Text("3").shift(LEFT) 497 | t2 = Text("1") 498 | t3 = Text("2").shift(RIGHT) 499 | vg = VGroup(t2,t3,t1) 500 | self.add(t2,t3,t1) 501 | self.wait(0.5) 502 | self.play(vg.animate.arrange(buff=1.0)) 503 | self.remove(t1,t2,t3) 504 | 505 | self.play(Transform(text,Text("animate.arrange_in_grid").shift(UP*2.5)), run_time=0.5) 506 | boxes=VGroup(*[Square().scale(0.5) for s in range(0,6)]) 507 | boxes.arrange(buff=1.0) 508 | self.add(*boxes) 509 | self.wait(0.5) 510 | self.play(boxes.animate.arrange_in_grid(rows=2, buff=0.5)) 511 | self.remove(*boxes) 512 | 513 | self.play(Transform(text,Text("animate.become").shift(UP*2.5)), run_time=0.5) 514 | circ = Circle(fill_color=RED, fill_opacity=0.8).shift(RIGHT*1.5) 515 | square = Square(fill_color=BLUE, fill_opacity=0.2).shift(LEFT*1.5) 516 | self.add(circ,square) 517 | self.wait(0.5) 518 | self.play(circ.animate.become(square)) 519 | self.remove(circ,square) 520 | 521 | self.play(Transform(text,Text("animate.match_points").shift(UP*2.5)), run_time=0.5) 522 | circ = Circle(fill_color=RED, fill_opacity=0.8).shift(RIGHT*1.5) 523 | square = Square(fill_color=BLUE, fill_opacity=0.2).shift(LEFT*1.5) 524 | self.add(circ,square) 525 | self.wait(0.5) 526 | self.play(circ.animate.match_points(square)) 527 | self.wait(0.5) 528 | self.play(FadeOut(circ),FadeOut(square)) 529 | 530 | self.wait(0.5) 531 | self.play(FadeOut(text)) 532 | self.wait() 533 | 534 | 535 | 536 | 537 | 538 | 539 | 540 | 541 | 542 | 543 | --------------------------------------------------------------------------------