diff --git a/docs/source/_static/example_scenes/InteractiveDevlopment.mp4 b/docs/source/_static/example_scenes/InteractiveDevelopment.mp4 similarity index 100% rename from docs/source/_static/example_scenes/InteractiveDevlopment.mp4 rename to docs/source/_static/example_scenes/InteractiveDevelopment.mp4 diff --git a/docs/source/development/changelog.rst b/docs/source/development/changelog.rst index 1460d9b6..e12aeea4 100644 --- a/docs/source/development/changelog.rst +++ b/docs/source/development/changelog.rst @@ -1,4 +1,39 @@ Changelog ========= -No changes now. \ No newline at end of file +Unreleased +---------- + +Fixed bugs +^^^^^^^^^^ + +- Fixed the bug of :func:`~manimlib.utils.iterables.resize_with_interpolation` in the case of ``length=0`` +- Fixed the bug of ``__init__`` in :class:`~manimlib.mobject.geometry.Elbow` +- If chosen monitor is not available, choose one that does exist +- Make sure mobject data gets unlocked after animations +- Fixed a bug for off-center vector fields +- Had ``Mobject.match_points`` return self +- Fixed chaining animation in example scenes + +New Features +^^^^^^^^^^^^ + +- Added :class:`~manimlib.animation.indication.VShowPassingFlash` +- Added ``COLORMAP_3B1B`` +- Added some methods to coordinate system to access all axes ranges + + - :meth:`~manimlib.mobject.coordinate_systems.CoordinateSystem.get_origin` + - :meth:`~manimlib.mobject.coordinate_systems.CoordinateSystem.get_all_ranges` +- Added :meth:`~manimlib.mobject.mobject.Mobject.set_color_by_rgba_func` +- Updated :class:`~manimlib.mobject.vector_field.VectorField` and :class:`~manimlib.mobject.vector_field.StreamLines` +- Allow ``3b1b_colormap`` as an option for :func:`~manimlib.utils.color.get_colormap_list` +- Return ``stroke_width`` as 1d array +- Added :meth:`~manimlib.mobject.svg.text_mobject.Text.get_parts_by_text` +- Use Text not TexText for Brace +- Update to Cross to make it default to variable stroke width +- Added :class:`~manimlib.animation.indication.FlashAround` and :class:`~manimlib.animation.indication.FlashUnder` +- Allowed configuration in ``Brace.get_text`` +- Added :meth:`~manimlib.camera.camera.CameraFrame.reorient` for quicker changes to frame angle +- Added ``units`` to :meth:`~manimlib.camera.camera.CameraFrame.set_euler_angles` +- Allowed any ``VMobject`` to be passed into ``TransformMatchingTex`` +- Removed double brace convention in ``Tex`` and ``TexText`` \ No newline at end of file diff --git a/docs/source/documentation/custom_config.rst b/docs/source/documentation/custom_config.rst index 496c87a9..86f4eb8d 100644 --- a/docs/source/documentation/custom_config.rst +++ b/docs/source/documentation/custom_config.rst @@ -56,7 +56,7 @@ custom_config - ``raster_images`` The directory for storing raster images to be used in the code (including - ``.jpg``, ``.png`` and ``.gif``), which will be read by ``ImageMobject``. + ``.jpg``, ``.jpeg``, ``.png`` and ``.gif``), which will be read by ``ImageMobject``. - ``vector_images`` The directory for storing vector images to be used in the code (including @@ -108,6 +108,11 @@ The relative position of the playback window on the display (two characters, the first character means upper(U) / middle(O) / lower(D), the second character means left(L) / middle(O) / right(R)). +``window_monitor`` +------------------ + +The number of the monitor you want the preview window to pop up on. (default is 0) + ``break_into_partial_movies`` ----------------------------- diff --git a/docs/source/getting_started/configuration.rst b/docs/source/getting_started/configuration.rst index 17319bb1..88da1bc8 100644 --- a/docs/source/getting_started/configuration.rst +++ b/docs/source/getting_started/configuration.rst @@ -85,5 +85,5 @@ following the directory structure: └── custom_config.yml When you enter the ``project/`` folder and run ``manimgl code.py ``, -it will overwrite ``manim/custom_config.yml`` with ``custom_config.yml`` +it will overwrite ``manim/default_config.yml`` with ``custom_config.yml`` in the ``project`` folder. \ No newline at end of file diff --git a/docs/source/getting_started/example_scenes.rst b/docs/source/getting_started/example_scenes.rst index 6c3a72bb..203c84e7 100644 --- a/docs/source/getting_started/example_scenes.rst +++ b/docs/source/getting_started/example_scenes.rst @@ -8,12 +8,12 @@ the simplest and one by one. InteractiveDevlopment --------------------- -.. manim-example:: InteractiveDevlopment - :media: ../_static/example_scenes/InteractiveDevlopment.mp4 +.. manim-example:: InteractiveDevelopment + :media: ../_static/example_scenes/InteractiveDevelopment.mp4 from manimlib import * - class InteractiveDevlopment(Scene): + class InteractiveDevelopment(Scene): def construct(self): circle = Circle() circle.set_fill(BLUE, opacity=0.5) @@ -128,6 +128,8 @@ TextExample class TextExample(Scene): def construct(self): + # To run this scene properly, you should have "Consolas" font in your computer + # for full usage, you can see https://github.com/3b1b/manim/pull/680 text = Text("Here is a text", font="Consolas", font_size=90) difference = Text( """ @@ -135,6 +137,7 @@ TextExample you can change the font more easily, but can't use the LaTeX grammar """, font="Arial", font_size=24, + # t2c is a dict that you can choose color for different text t2c={"Text": BLUE, "TexText": BLUE, "LaTeX": ORANGE} ) VGroup(text, difference).arrange(DOWN, buff=1) @@ -148,6 +151,7 @@ TextExample t2f={"font": "Consolas", "words": "Consolas"}, t2c={"font": BLUE, "words": GREEN} ) + fonts.set_width(FRAME_WIDTH - 1) slant = Text( "And the same as slant and weight", font="Consolas", @@ -180,20 +184,24 @@ TexTransformExample def construct(self): to_isolate = ["B", "C", "=", "(", ")"] lines = VGroup( - # Surrounding substrings with double braces - # will ensure that those parts are separated - # out in the Tex. For example, here the - # Tex will have 5 submobjects, corresponding - # to the strings [A^2, +, B^2, =, C^2] - Tex("{{A^2}} + {{B^2}} = {{C^2}}"), - Tex("{{A^2}} = {{C^2}} - {{B^2}}"), + # Passing in muliple arguments to Tex will result + # in the same expression as if those arguments had + # been joined together, except that the submobject + # heirarchy of the resulting mobject ensure that the + # Tex mobject has a subject corresponding to + # each of these strings. For example, the Tex mobject + # below will have 5 subjects, corresponding to the + # expressions [A^2, +, B^2, =, C^2] + Tex("A^2", "+", "B^2", "=", "C^2"), + # Likewise here + Tex("A^2", "=", "C^2", "-", "B^2"), # Alternatively, you can pass in the keyword argument # "isolate" with a list of strings that should be out as - # their own submobject. So both lines below are equivalent - # to what you'd get by wrapping every instance of "B", "C" - # "=", "(" and ")" with double braces - Tex("{{A^2}} = (C + B)(C - B)", isolate=to_isolate), - Tex("A = \\sqrt{(C + B)(C - B)}", isolate=to_isolate) + # their own submobject. So the line below is equivalent + # to the commented out line below it. + Tex("A^2 = (C + B)(C - B)", isolate=["A^2", *to_isolate]), + # Tex("A^2", "=", "(", "C", "+", "B", ")", "(", "C", "-", "B", ")"), + Tex("A = \\sqrt{(C + B)(C - B)}", isolate=["A", *to_isolate]) ) lines.arrange(DOWN, buff=LARGE_BUFF) for line in lines: @@ -252,7 +260,7 @@ TexTransformExample # new_line2 and the "\sqrt" from the final line. By passing in, # transform_mismatches=True, it will transform this "^2" part into # the "\sqrt" part. - new_line2 = Tex("{{A}}^2 = (C + B)(C - B)", isolate=to_isolate) + new_line2 = Tex("A^2 = (C + B)(C - B)", isolate=["A", *to_isolate]) new_line2.replace(lines[2]) new_line2.match_style(lines[2]) @@ -343,7 +351,7 @@ UpdatersExample ) self.wait() self.play( - square.set_width(5, stretch=True), + square.animate.set_width(5, stretch=True), run_time=3, ) self.wait() @@ -387,7 +395,7 @@ CoordinateSystemExample axes = Axes( # x-axis ranges from -1 to 10, with a default step size of 1 x_range=(-1, 10), - # y-axis ranges from -2 to 10 with a step size of 0.5 + # y-axis ranges from -2 to 2 with a step size of 0.5 y_range=(-2, 2, 0.5), # The axes will be stretched so as to match the specified # height and width diff --git a/docs/source/getting_started/structure.rst b/docs/source/getting_started/structure.rst index f1a05623..6c5f3375 100644 --- a/docs/source/getting_started/structure.rst +++ b/docs/source/getting_started/structure.rst @@ -99,6 +99,7 @@ Below is the directory structure of manim: ├── config_ops.py # Process CONFIG ├── customization.py # Read from custom_config.yml ├── debug.py # Utilities for debugging in program + ├── directories.py # Read directories from config file ├── family_ops.py # Process family members ├── file_ops.py # Process files and directories ├── images.py # Read image diff --git a/example_scenes.py b/example_scenes.py index 10484451..6931ff0b 100644 --- a/example_scenes.py +++ b/example_scenes.py @@ -342,7 +342,7 @@ class CoordinateSystemExample(Scene): axes = Axes( # x-axis ranges from -1 to 10, with a default step size of 1 x_range=(-1, 10), - # y-axis ranges from -2 to 10 with a step size of 0.5 + # y-axis ranges from -2 to 2 with a step size of 0.5 y_range=(-2, 2, 0.5), # The axes will be stretched so as to match the specified # height and width diff --git a/manimlib/utils/init_config.py b/manimlib/utils/init_config.py index 064db879..f126849f 100644 --- a/manimlib/utils/init_config.py +++ b/manimlib/utils/init_config.py @@ -23,6 +23,7 @@ def init_customization(): "background_color": "", }, "window_position": "UR", + "window_position": 0, "break_into_partial_movies": False, "camera_qualities": { "low": {