mirror of
https://github.com/ManimCommunity/manim.git
synced 2026-06-22 10:01:47 +00:00
* finish draft implementation * use @wrapss to remove docs problems * reduce complexity and add doc deprecation * Docs deprecated_params * add decoratos to __init__ * Add decorators to documentation * Finish detailed docs * Apply suggestions from code review Co-authored-by: Naveen M K <naveen@syrusdark.website> * change since/until/message param docs * Mark get_callable_info and deprecation_text_component as private * change how until is included in warning messages * Add The to parameter descriptions * make params docs more readable * make redirections docs clearer * update dependency list * order dependencies * update examples * fix dependency problem * fix duplicate problem * change decorator version * updated lock file * enhance function / method separation * fix typo and double underscores * rename message_ and replacement_ * Change warning to custom admonition * remove [] as default parameters * Remove "" around type * fix bug and move to inspect * doc string => docstring * rename to deprecate * change module docstring * change to deprecation.py * remove tests again * Rename decorators.py to deprecate.py * Update poetry.lock * Test if deprecated class outputs the correct warning when used * Rename deprecate to deprecation * Shorten conditional for msg, since, util * Specify decorator arguments in test * Add tests for since and until as arguments * Add test for msg argument for class * Add test for replacement argument for class * Remove unneeded docstring in deprecated class * Add test for deprecate method, no args * Update docstring examples, move deprecated method outside class * Add test for method in class, since and message args * Add test for deprecating nested class * Add test for deprecated method in nested class * Test deprecation of nested function * Test param deprecation, only params argument * Test deprecation of single method param * Rename single param test method name * Fix deprecated_params docstring whitespace * Test parameter redirection using tuple * Update warning msgs in deprecated_params docstring * Test parameter redirection using lambda function * Test param redirection from many to one * Test param redirection from one to many * Update Top.foo to deprecate with message * FadeIn & FadeOut overhaul and deprecations * Adjust examples * Add docs * Add simple example * handle empty docstrings * Update poetry.lock * Deprecate ShowCreation using decorator to test the docs * Test docstrings * add examples * Update example_scenes/basic.py Co-authored-by: Laith Bahodi <70682032+hydrobeam@users.noreply.github.com> Co-authored-by: Naveen M K <naveen@syrusdark.website> Co-authored-by: Ricky Chon <rickychon99@gmail.com> Co-authored-by: Laith Bahodi <70682032+hydrobeam@users.noreply.github.com>
132 lines
3.8 KiB
Python
132 lines
3.8 KiB
Python
#!/usr/bin/env python
|
|
|
|
from manim import *
|
|
|
|
# To watch one of these scenes, run the following:
|
|
# python --quality m manim -p example_scenes.py SquareToCircle
|
|
#
|
|
# Use the flag --quality l for a faster rendering at a lower quality.
|
|
# Use -s to skip to the end and just save the final frame
|
|
# Use the -p to have preview of the animation (or image, if -s was
|
|
# used) pop up once done.
|
|
# Use -n <number> to skip ahead to the nth animation of a scene.
|
|
# Use -r <number> to specify a resolution (for example, -r 1920,1080
|
|
# for a 1920x1080 video)
|
|
|
|
|
|
class OpeningManim(Scene):
|
|
def construct(self):
|
|
title = Tex(r"This is some \LaTeX")
|
|
basel = MathTex(r"\sum_{n=1}^\infty \frac{1}{n^2} = \frac{\pi^2}{6}")
|
|
VGroup(title, basel).arrange(DOWN)
|
|
self.play(
|
|
Write(title),
|
|
FadeIn(basel, shift=DOWN),
|
|
)
|
|
self.wait()
|
|
|
|
transform_title = Tex("That was a transform")
|
|
transform_title.to_corner(UP + LEFT)
|
|
self.play(
|
|
Transform(title, transform_title),
|
|
LaggedStart(*[FadeOut(obj, shift=DOWN) for obj in basel]),
|
|
)
|
|
self.wait()
|
|
|
|
grid = NumberPlane()
|
|
grid_title = Tex("This is a grid")
|
|
grid_title.scale(1.5)
|
|
grid_title.move_to(transform_title)
|
|
|
|
self.add(grid, grid_title) # Make sure title is on top of grid
|
|
self.play(
|
|
FadeOut(title),
|
|
FadeIn(grid_title, shift=UP),
|
|
Create(grid, run_time=3, lag_ratio=0.1),
|
|
)
|
|
self.wait()
|
|
|
|
grid_transform_title = Tex(
|
|
r"That was a non-linear function \\ applied to the grid"
|
|
)
|
|
grid_transform_title.move_to(grid_title, UL)
|
|
grid.prepare_for_nonlinear_transform()
|
|
self.play(
|
|
grid.animate.apply_function(
|
|
lambda p: p
|
|
+ np.array(
|
|
[
|
|
np.sin(p[1]),
|
|
np.sin(p[0]),
|
|
0,
|
|
]
|
|
)
|
|
),
|
|
run_time=3,
|
|
)
|
|
self.wait()
|
|
self.play(Transform(grid_title, grid_transform_title))
|
|
self.wait()
|
|
|
|
|
|
class SquareToCircle(Scene):
|
|
def construct(self):
|
|
circle = Circle()
|
|
square = Square()
|
|
square.flip(RIGHT)
|
|
square.rotate(-3 * TAU / 8)
|
|
circle.set_fill(PINK, opacity=0.5)
|
|
|
|
self.play(Create(square))
|
|
self.play(Transform(square, circle))
|
|
self.play(FadeOut(square))
|
|
|
|
|
|
class WarpSquare(Scene):
|
|
def construct(self):
|
|
square = Square()
|
|
self.play(
|
|
ApplyPointwiseFunction(
|
|
lambda point: complex_to_R3(np.exp(R3_to_complex(point))), square
|
|
)
|
|
)
|
|
self.wait()
|
|
|
|
|
|
class WriteStuff(Scene):
|
|
def construct(self):
|
|
example_text = Tex("This is a some text", tex_to_color_map={"text": YELLOW})
|
|
example_tex = MathTex(
|
|
"\\sum_{k=1}^\\infty {1 \\over k^2} = {\\pi^2 \\over 6}",
|
|
)
|
|
group = VGroup(example_text, example_tex)
|
|
group.arrange(DOWN)
|
|
group.width = config["frame_width"] - 2 * LARGE_BUFF
|
|
|
|
self.play(Write(example_text))
|
|
self.play(Write(example_tex))
|
|
self.wait()
|
|
|
|
|
|
class UpdatersExample(Scene):
|
|
def construct(self):
|
|
decimal = DecimalNumber(
|
|
0,
|
|
show_ellipsis=True,
|
|
num_decimal_places=3,
|
|
include_sign=True,
|
|
)
|
|
square = Square().to_edge(UP)
|
|
|
|
decimal.add_updater(lambda d: d.next_to(square, RIGHT))
|
|
decimal.add_updater(lambda d: d.set_value(square.get_center()[1]))
|
|
self.add(square, decimal)
|
|
self.play(
|
|
square.animate.to_edge(DOWN),
|
|
rate_func=there_and_back,
|
|
run_time=5,
|
|
)
|
|
self.wait()
|
|
|
|
|
|
# See many more examples at https://docs.manim.community/en/stable/examples.html
|