diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 76118118..00000000 --- a/.travis.yml +++ /dev/null @@ -1,30 +0,0 @@ -language: python -dist: xenial # required for Python 3.7 (travis-ci/travis-ci#9069) -python: "3.7" -cache: pip - -addons: - apt: - packages: - - python3-sphinx -install: - - pip install --upgrade pip - - pip install -r requirements.txt - - pip install flake8 -before_script: - # stop the build if there are Python syntax errors or undefined names - - flake8 manimlib/ --count --select=E9,F63,F72,F82 --show-source --statistics - # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide - - flake8 manimlib/ --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics -script: - - python setup.py test - - python setup.py bdist_wheel -after_success: - - test $TRAVIS_BRANCH = "master" && test $TRAVIS_PULL_REQUEST = "false" && travis/build_docs.sh -deploy: - provider: pypi - user: eulertour - on: - tags: true - password: - secure: j5M2hiJo9kDWJhl0/iSuIQmfd2G2O1Qoc455AkUPMCheAcALnX9xJgFsYBmqfgOXTCtUCQf52XGdOIG4o4s5TY340NZ9eLKI9cWae+sTeSrDCkdwChUilm3D0jQf1FWPUf9ywScwGi20m0sRtzxEJyTuX+JMFd7PIa8bFoDXWPtEjoFOOJrfBusMsANzrI+j+vIMdJ48lc1J8UsQdZapwusTrYU9s12JLhKBPLavmaDKf0HDAJdEhFQ9SaINdkiW/QY8qbfJ/MVu5jHai168zXjD/IaswxoKqCO1G+fWlOq3KwVhG7gI7rwhnnuF+wcA7yLAaMdo0CjO2V7z15S6cG721V2Il2IIh1jq0F8irSH1ZOLOkv/fFk9hkSUQyEU0i8k4m1wE9L47a6GP/66+b+gI91PGfxBOqq4gE/1BdZJqceh0qc13KpcehtYrQwR05bSw0Ye5OoTkqAnCeON0B0Ur4ejfHd3TzkjgB06fw76cZtjAK8f/YjB3KyNCvysOixgzE4tRxlY92yX/tAKZ3iX3yD0MjsinSfwo52N5sIEaCS/FmPRMhJOQBa6ftkfbcUNQBTG9G3b134XXF/LbC4vBloCaTm5VSXagta+oY3SFKQxPAZXx7X+wcFGjqxDjZXG1e66QnA2JJH4aBDsRfSXmUtD8MblwFYdcCJWz+Ck= diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 5168bb18..00000000 --- a/Dockerfile +++ /dev/null @@ -1,19 +0,0 @@ -FROM python:3.7 -RUN apt-get update \ - && apt-get install -qqy --no-install-recommends \ - apt-utils \ - ffmpeg \ - sox \ - libcairo2-dev \ - texlive \ - texlive-fonts-extra \ - texlive-latex-extra \ - texlive-latex-recommended \ - texlive-science \ - tipa \ - && rm -rf /var/lib/apt/lists/* -COPY . /manim -RUN cd /manim \ - && python setup.py sdist \ - && python -m pip install dist/manimlib* -ENTRYPOINT ["/bin/bash"] diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 4a25a0dc..00000000 --- a/docker-compose.yml +++ /dev/null @@ -1,16 +0,0 @@ -version: '3.1' - -services: - manim: - # comment this line if you build the image to prevent overwriting the tag - image: eulertour/manim:latest - # uncomment this line to build rather than pull the image - # build: . - entrypoint: - - manim - - --media_dir=/tmp/output - volumes: - - ${INPUT_PATH:?INPUT_PATH environment variable isn't set}:/tmp/input - - ${OUTPUT_PATH:?OUTPUT_PATH environment variable isn't set}:/tmp/output - working_dir: /tmp/input - network_mode: "none" diff --git a/docs/Makefile b/docs/Makefile deleted file mode 100644 index 69fe55ec..00000000 --- a/docs/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -# Minimal makefile for Sphinx documentation -# - -# You can set these variables from the command line. -SPHINXOPTS = -SPHINXBUILD = sphinx-build -SOURCEDIR = source -BUILDDIR = build - -# Put it first so that "make" without argument is like "make help". -help: - @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) - -.PHONY: help Makefile - -# Catch-all target: route all unknown targets to Sphinx using the new -# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). -%: Makefile - @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file diff --git a/docs/make.bat b/docs/make.bat deleted file mode 100644 index 543c6b13..00000000 --- a/docs/make.bat +++ /dev/null @@ -1,35 +0,0 @@ -@ECHO OFF - -pushd %~dp0 - -REM Command file for Sphinx documentation - -if "%SPHINXBUILD%" == "" ( - set SPHINXBUILD=sphinx-build -) -set SOURCEDIR=source -set BUILDDIR=build - -if "%1" == "" goto help - -%SPHINXBUILD% >NUL 2>NUL -if errorlevel 9009 ( - echo. - echo.The 'sphinx-build' command was not found. Make sure you have Sphinx - echo.installed, then set the SPHINXBUILD environment variable to point - echo.to the full path of the 'sphinx-build' executable. Alternatively you - echo.may add the Sphinx directory to PATH. - echo. - echo.If you don't have Sphinx installed, grab it from - echo.http://sphinx-doc.org/ - exit /b 1 -) - -%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% -goto end - -:help -%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% - -:end -popd diff --git a/docs/source/about.rst b/docs/source/about.rst deleted file mode 100644 index 2a86dfd9..00000000 --- a/docs/source/about.rst +++ /dev/null @@ -1,11 +0,0 @@ -About -===== - -Animating technical concepts is traditionally pretty tedious, since it can be -difficult to make the animations precise enough to convey them accurately. -``Manim`` uses Python to generate animations programmatically, which makes it -possible to specify exactly how each one should run. - -This project is still very much a work in progress, but I hope that the -information here will make it easier for newcomers to get started using -``Manim``. diff --git a/docs/source/animation.rst b/docs/source/animation.rst deleted file mode 100644 index 930dd3de..00000000 --- a/docs/source/animation.rst +++ /dev/null @@ -1,210 +0,0 @@ -Animation -========= - - - -The simplest of which is ``Scene.add``. The object appears on the first frame -without any animation:: - - class NoAnimation(Scene): - def construct(self): - square = Square() - self.add(square)) - -Animation are used in conjunction with ``scene.Play`` - -Fade ----- - -.. raw:: html - - - -.. code-block:: python - - class AnimationFadeIn(Scene): - def construct(self): - square = Square() - - anno = TextMobject("Fade In") - anno.shift(2 * DOWN) - self.add(anno) - self.play(FadeIn(square)) - -.. raw:: html - - - -.. code-block:: python - - class AnimationFadeOut(Scene): - def construct(self): - square = Square() - - anno = TextMobject("Fade Out") - anno.shift(2 * DOWN) - self.add(anno) - self.add(square) - self.play(FadeOut(square)) - - - -.. raw:: html - - - -.. code-block:: python - - class AnimationFadeIn(Scene): - def construct(self): - square = Square() - for label, edge in zip( - ["LEFT", "RIGHT", "UP", "DOWN"], [LEFT, RIGHT, UP, DOWN] - ): - anno = TextMobject(f"Fade In from {label}") - anno.shift(2 * DOWN) - self.add(anno) - - self.play(FadeIn(square, edge)) - self.remove(anno, square) - - - -.. raw:: html - - - -.. code-block:: python - - class AnimationFadeOut(Scene): - def construct(self): - square = Square() - for label, edge in zip( - ["LEFT", "RIGHT", "UP", "DOWN"], [LEFT, RIGHT, UP, DOWN] - ): - anno = TextMobject(f"Fade Out and shift {label}") - anno.shift(2 * DOWN) - self.add(anno) - - self.play(FadeOut(square, edge)) - self.remove(anno, square) - - - -.. raw:: html - - - -.. code-block:: python - - class AnimationFadeInFromLarge(Scene): - def construct(self): - square = Square() - - for factor in [0.1, 0.5, 0.8, 1, 2, 5]: - anno = TextMobject(f"Fade In from large scale\_factor={factor}") - anno.shift(2 * DOWN) - self.add(anno) - - self.play(FadeInFromLarge(square, scale_factor=factor)) - self.remove(anno, square) - -.. raw:: html - - - -.. code-block:: python - - class AnimationFadeInFromPoint(Scene): - def construct(self): - square = Square() - for i in range(-6, 7, 2): - anno = TextMobject(f"Fade In from point {i}") - anno.shift(2 * DOWN) - self.add(anno) - self.play(FadeInFromPoint(square, point=i)) - self.remove(anno, square) - - - -Grow ----- - -.. raw:: html - - - -.. code-block:: python - - class AnimationGrowFromEdge(Scene): - def construct(self): - - for label, edge in zip( - ["LEFT", "RIGHT", "UP", "DOWN"], [LEFT, RIGHT, UP, DOWN] - ): - anno = TextMobject(f"Grow from {label} edge") - anno.shift(2 * DOWN) - self.add(anno) - square = Square() - self.play(GrowFromEdge(square, edge)) - self.remove(anno, square) - - - -.. raw:: html - - - -.. code-block:: python - - class AnimationGrowFromCenter(Scene): - def construct(self): - square = Square() - - anno = TextMobject("Grow from center") - anno.shift(2 * DOWN) - self.add(anno) - - self.play(GrowFromCenter(square)) - - - - -Diagonal Directions -------------------- - -You can combine cardinal directions to form diagonal animations - -.. raw:: html - - - -.. code-block:: python - - class AnimationFadeInFromDiagonal(Scene): - def construct(self): - square = Square() - for diag in [UP + LEFT, UP + RIGHT, DOWN + LEFT, DOWN + RIGHT]: - self.play(FadeIn(square, diag)) - -.. note:: - You can also use the abbreviated forms like ``UL, UR, DL, DR``. - See :ref:`ref-directions`. diff --git a/docs/source/assets/AnimationFadeIn.mp4 b/docs/source/assets/AnimationFadeIn.mp4 deleted file mode 100644 index 783a6fa8..00000000 Binary files a/docs/source/assets/AnimationFadeIn.mp4 and /dev/null differ diff --git a/docs/source/assets/AnimationFadeInFrom.mp4 b/docs/source/assets/AnimationFadeInFrom.mp4 deleted file mode 100644 index 90ead072..00000000 Binary files a/docs/source/assets/AnimationFadeInFrom.mp4 and /dev/null differ diff --git a/docs/source/assets/AnimationFadeInFromDiagonal.mp4 b/docs/source/assets/AnimationFadeInFromDiagonal.mp4 deleted file mode 100644 index 25b0145c..00000000 Binary files a/docs/source/assets/AnimationFadeInFromDiagonal.mp4 and /dev/null differ diff --git a/docs/source/assets/AnimationFadeInFromLarge.mp4 b/docs/source/assets/AnimationFadeInFromLarge.mp4 deleted file mode 100644 index 589789ea..00000000 Binary files a/docs/source/assets/AnimationFadeInFromLarge.mp4 and /dev/null differ diff --git a/docs/source/assets/AnimationFadeInFromPoint.mp4 b/docs/source/assets/AnimationFadeInFromPoint.mp4 deleted file mode 100644 index cdfdc84c..00000000 Binary files a/docs/source/assets/AnimationFadeInFromPoint.mp4 and /dev/null differ diff --git a/docs/source/assets/AnimationFadeInFromSmall.mp4 b/docs/source/assets/AnimationFadeInFromSmall.mp4 deleted file mode 100644 index 9e8f8097..00000000 Binary files a/docs/source/assets/AnimationFadeInFromSmall.mp4 and /dev/null differ diff --git a/docs/source/assets/AnimationFadeOut.mp4 b/docs/source/assets/AnimationFadeOut.mp4 deleted file mode 100644 index 5938ab7e..00000000 Binary files a/docs/source/assets/AnimationFadeOut.mp4 and /dev/null differ diff --git a/docs/source/assets/AnimationFadeOutAndShift.mp4 b/docs/source/assets/AnimationFadeOutAndShift.mp4 deleted file mode 100644 index 834145cb..00000000 Binary files a/docs/source/assets/AnimationFadeOutAndShift.mp4 and /dev/null differ diff --git a/docs/source/assets/AnimationGrowFromCenter.mp4 b/docs/source/assets/AnimationGrowFromCenter.mp4 deleted file mode 100644 index 634863bb..00000000 Binary files a/docs/source/assets/AnimationGrowFromCenter.mp4 and /dev/null differ diff --git a/docs/source/assets/AnimationGrowFromEdge.mp4 b/docs/source/assets/AnimationGrowFromEdge.mp4 deleted file mode 100644 index 7da5f313..00000000 Binary files a/docs/source/assets/AnimationGrowFromEdge.mp4 and /dev/null differ diff --git a/docs/source/assets/SquareToCircle.mp4 b/docs/source/assets/SquareToCircle.mp4 deleted file mode 100644 index 5b1e9b90..00000000 Binary files a/docs/source/assets/SquareToCircle.mp4 and /dev/null differ diff --git a/docs/source/assets/coordinate/CoorAlias.mp4 b/docs/source/assets/coordinate/CoorAlias.mp4 deleted file mode 100644 index 3df8e0fd..00000000 Binary files a/docs/source/assets/coordinate/CoorAlias.mp4 and /dev/null differ diff --git a/docs/source/assets/coordinate/CoorArithmetic.mp4 b/docs/source/assets/coordinate/CoorArithmetic.mp4 deleted file mode 100644 index cea6c087..00000000 Binary files a/docs/source/assets/coordinate/CoorArithmetic.mp4 and /dev/null differ diff --git a/docs/source/assets/coordinate/CoorPolygon.png b/docs/source/assets/coordinate/CoorPolygon.png deleted file mode 100644 index 5c9793fa..00000000 Binary files a/docs/source/assets/coordinate/CoorPolygon.png and /dev/null differ diff --git a/docs/source/assets/coordinate/DotMap.mp4 b/docs/source/assets/coordinate/DotMap.mp4 deleted file mode 100644 index 6e7d0c3d..00000000 Binary files a/docs/source/assets/coordinate/DotMap.mp4 and /dev/null differ diff --git a/docs/source/conf.py b/docs/source/conf.py deleted file mode 100644 index 81567716..00000000 --- a/docs/source/conf.py +++ /dev/null @@ -1,53 +0,0 @@ -# Configuration file for the Sphinx documentation builder. -# -# This file only contains a selection of the most common options. For a full -# list see the documentation: -# http://www.sphinx-doc.org/en/master/config - -# -- Path setup -------------------------------------------------------------- - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -# -# import os -# import sys -# sys.path.insert(0, os.path.abspath('.')) - - -# -- Project information ----------------------------------------------------- - -project = 'Manim' -copyright = '2019, EulerTour' -author = 'EulerTour' - - -# -- General configuration --------------------------------------------------- -master_doc = 'index' - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [ -] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -# This pattern also affects html_static_path and html_extra_path. -exclude_patterns = [] - - -# -- Options for HTML output ------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -# -html_theme = 'sphinx_rtd_theme' - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['assets'] diff --git a/docs/source/constants.rst b/docs/source/constants.rst deleted file mode 100644 index 7bc34d14..00000000 --- a/docs/source/constants.rst +++ /dev/null @@ -1,94 +0,0 @@ -Manim Constants -=============== - -The ``constants.py`` under ``manimlib/`` contains variables that are used -during setup and running manim. Some variables are not documented here as they are -only used internally by manim. - -Directories ------------ - - MEDIA_DIR - The directory where ``VIDEO_DIR`` and ``TEX_DIR`` will be created, - if they aren't specified via flags. - VIDEO_DIR - Used to store the scenes rendered by Manim. When a scene is - finished rendering, it will be stored under - ``VIDEO_DIR/module_name/scene_name/quality/scene_name.mp4``. - Created under ``MEDIA_DIR`` by default. - TEX_DIR - Files written by Latex are stored here. It also acts as a cache - so that the files aren't rewritten each time Latex is needed. - -Those directories are created if they don't exist. - -Tex ---- - TEX_USE_CTEX - A boolean value. Change it to True if you need to use Chinese typesetting. - TEX_TEXT_TO_REPLACE - Placeholder text used by manim when generating tex files - TEMPLATE_TEX_FILE - By default ``manimlib/tex_template.tex`` is used. If ``TEX_USE_CTEX`` - is set to True then ``manimlib/ctex_template.tex`` is used. - -Numerical Constants -------------------- - - PI - alias to ``numpy.pi`` - TAU - PI * 2 - - DEGREES - TAU / 360 - -Camera Configuration --------------------- - -Render setting presets - - PRODUCTION_QUALITY_CAMERA_CONFIG - 2560x1440 @ 60fps # This is the default when rendering a scene - HIGH_QUALITY_CAMERA_CONFIG - 1920x1080 @ 60fps. # Used when the ``-h`` or ``--high_quality`` flag - is passed. - MEDIUM_QUALITY_CAMERA_CONFIG - 1280x720 @ 30fps. # Used when the ``-m`` or ``--medium_quality`` - flag is passed. - LOW_QUALITY_CAMERA_CONFIG - 854x480 @ 15fps. # Used when the ``-l`` or ``--low_quality`` flag is - passed. - -.. _ref-directions: - -Coordinates ------------ - -Used for 2d/3d animations and placements:: - - ORIGIN - UP - DOWN - RIGHT - LEFT - IN # 3d camera only, away from camera - OUT # 3d camera only, close to camera - - UL = UP + LEFT # diagonal abbreviations. You can use either one - UR = UP + RIGHT - DL = DOWN + LEFT - DR = DOWN + RIGHT - - TOP - BOTTOM - LEFT_SIDE - RIGHT_SIDE`` - -Colors ------- - - COLOR_MAP - A predefined color maps - PALETTE - A list of color hex strings, derived from COLOR_MAP diff --git a/docs/source/coordinate.rst b/docs/source/coordinate.rst deleted file mode 100644 index 27edb256..00000000 --- a/docs/source/coordinate.rst +++ /dev/null @@ -1,178 +0,0 @@ -Coordinate -========== - -By default, the scene in manim is made up by 8 x 14 grid. The grid is addressed using a numpy -array in the form of [x, y, z]. For 2D animations only the x and y axes are used. - -.. code-block:: python - - class DotMap(Scene): - def construct(self): - dots = dict() - annos = dict() - var_index = 0 - for x in range(-7, 8): - for y in range(-4, 5): - annos[f"{x}{y}"] = TexMobject(f"({x}, {y})") - dots[f"{var_index}"] = Dot(np.array([x, y, 0])) - var_index = var_index + 1 - for anno, dot in zip(annos.values(), dots.values()): - self.add(anno) - self.add(dot) - self.wait(0.2) - self.remove(anno) - -.. raw:: html - - - -.. note:: - You can place objects outside this boundary, but it won't show up in the render. - -Using Coordinates ------------------ - -Coordinates are used for creating geometries (`VMobject` in manim) and animations. - -Here coordinates are used to create this Polygon - -.. code-block:: python - - class CoorPolygon(Scene): - def construct(self): - for x in range(-7, 8): - for y in range(-4, 5): - self.add(Dot(np.array([x, y, 0]), color=DARK_GREY)) - polygon = Polygon( - np.array([3, 2, 0]), - np.array([1, -1, 0]), - np.array([-5, -4, 0]), - np.array([-4, 4, 0])) - self.add(polygon) - - -.. Image:: assets/coordinate/CoorPolygon.png - :width: 700px - -Coordinate Aliasing -------------------- - -From some animations typing a ``np.array`` everytime you need a coordinate can be tedious. -Manim provides aliases to the most common coordinates:: - - UP == np.array([0, 1, 0]) - DOWN == np.array([0, -1, 0]) - LEFT == np.array([-1, 0, 0]) - RIGHT == np.array([1, 0, 0]) - UL == np.array([-1, 1, 0]) - DL == np.array([-1, -1, 0]) - UR == np.array([1, 1, 0]) - DR == np.array([1, -1, 0]) - -Here coordinates are used for animations - -.. code-block:: python - - class CoorAlias(Scene): - def construct(self): - for x in range(-7, 8): - for y in range(-4, 5): - self.add(Dot(np.array([x, y, 0]), color=DARK_GREY)) - - aliases = { - "UP": UP, - "np.array([0,1,0])": np.array([0, 1, 0]), - "DOWN": DOWN, - "np.array([0,-1,0])": np.array([0, -1, 0]), - "LEFT": LEFT, - "np.array([-1,0,0])": np.array([-1, 0, 0]), - "RIGHT": RIGHT, - "np.array([1,0,0])": np.array([1, 0, 0]), - "UL": UL, - "np.array([-1,1,0])": np.array([-1, 1, 0]), - "DL": DL, - "np.array([-1,-1,0])": np.array([-1, -1, 0]), - "UR": UR, - "np.array([1,1,0])": np.array([1, 1, 0]), - "DR": DR, - "np.array([1,-1,0])": np.array([1, -1, 0])} - circle = Circle(color=RED, radius=0.5) - self.add(circle) - self.wait(0.5) - - for text, aliase in aliases.items(): - anno = TexMobject(f"\\texttt{{{text}}}") - self.play(Write(anno, run_time=0.2)) - self.play(ApplyMethod(circle.shift, aliase)) - self.wait(0.2) - self.play(FadeOut(anno, run_time=0.2)) - -.. raw:: html - - - -Coordinate Arithmetic ---------------------- - -Numpy array allows arithmetic operations:: - - >>> numpy.array([2,2,0]) + 4 - array([6, 6, 4]) - - >>> np.array([1, -3, 0]) + np.array([-4, 2, 0]) - array([-3, -1, 0]) - - >>> np.array([2, 2, 0]) - np.array([3,6, 0]) - array([-1, -4, 0]) - - >>> numpy.array([2,2,0]) - 3 - array([-1, -1, -3]) - - >>> np.array([1, -3, 0]) * 3 - array([ 3, -9, 0]) - - >>> numpy.array([2,2,0]) / 2 - array([1., 1., 0.]) - - >>> numpy.array([2,2,0]) / numpy.array([1, 4, 0]) - __main__:1: RuntimeWarning: invalid value encountered in true_divide - array([2. , 0.5, nan]) - -.. code-block:: python - - class CoorArithmetic(Scene): - def construct(self): - for x in range(-7, 8): - for y in range(-4, 5): - self.add(Dot(np.array([x, y, 0]), color=DARK_GREY)) - - circle = Circle(color=RED, radius=0.5) - self.add(circle) - self.wait(0.5) - - aliases = { - "LEFT * 3": LEFT * 3, - "UP + RIGHT / 2": UP + RIGHT / 2, - "DOWN + LEFT * 2": DOWN + LEFT * 2, - "RIGHT * 3.75 * DOWN": RIGHT * 3.75 * DOWN, - # certain arithmetic won't work as you expected - # In [4]: RIGHT * 3.75 * DOWN - # Out[4]: array([ 0., -0., 0.]) - "RIGHT * 3.75 + DOWN": RIGHT * 3.75 + DOWN} - - for text, aliase in aliases.items(): - anno = TexMobject(f"\\texttt{{{text}}}") - self.play(Write(anno, run_time=0.2)) - self.play(ApplyMethod(circle.shift, aliase)) - self.wait(0.2) - self.play(FadeOut(anno, run_time=0.2)) - -.. raw:: html - - diff --git a/docs/source/getting_started/animating_mobjects.rst b/docs/source/getting_started/animating_mobjects.rst deleted file mode 100644 index efc0a109..00000000 --- a/docs/source/getting_started/animating_mobjects.rst +++ /dev/null @@ -1,4 +0,0 @@ -Animating Mobjects -================== - -Learn about animations. diff --git a/docs/source/getting_started/index.rst b/docs/source/getting_started/index.rst deleted file mode 100644 index 11f8e9d0..00000000 --- a/docs/source/getting_started/index.rst +++ /dev/null @@ -1,18 +0,0 @@ -Getting Started -=============== - -Todd Zimmerman put together `a very nice tutorial`_ on getting started with -``manim``, which has been updated to run on python 3.7. Note that you'll want -to change `from big_ol_pile_of_manim_imports import *` to `from -manimlib.imports import *` to work with the current codebase. - -.. _a very nice tutorial: https://talkingphysics.wordpress.com/2019/01/08/getting-started-animating-with-manim-and-python-3-7/ - -.. toctree:: - :caption: Contents - :maxdepth: 2 - - learning_by_example - mathematical_objects - animating_mobjects - making_a_scene diff --git a/docs/source/getting_started/learning_by_example.rst b/docs/source/getting_started/learning_by_example.rst deleted file mode 100644 index dee86d7c..00000000 --- a/docs/source/getting_started/learning_by_example.rst +++ /dev/null @@ -1,131 +0,0 @@ -Learning by Example -=================== - -SquareToCircle --------------- - -``example_scenes.py`` contains simple examples that we can use to learn about manim. - -Go ahead and try out the ``SquareToCircle`` scene by running it with ``$ manim example_scenes.py SquareToCircle -p`` -in manim directory. - -.. code-block:: python - :linenos: - - from manimlib.imports import * - - 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(ShowCreation(square)) - self.play(Transform(square, circle)) - self.play(FadeOut(square)) - -.. raw:: html - - - - -.. note:: - - The flag ``-p`` plays the rendered video with default video player. - - Other frequently used flags are: - - * ``-l`` for rendering video in lower resolution (which renders faster) - * ``-s`` to show the last frame of the video. - - Run ``manim -h`` all the available flags (``python -m manim -h`` if you installed it to a venv) - - -Let's step through each line of ``SquareToCircle`` - -.. code-block:: python - :lineno-start: 3 - - class SquareToCircle(Scene): - -You create videos in manim by writing :class:`~scene.scene.Scene` classes. - -Each :class:`~scene.scene.Scene` in manim is self-contained. That means everything -you created under this scene does not exist outside the class. - -.. code-block:: python - :lineno-start: 4 - - def construct(self): - -:meth:`~scene.scene.Scene.construct` specifies what is displayed on the screen -when the :class:`~scene.scene.Scene` is rendered to video. - -.. code-block:: python - :lineno-start: 5 - - circle = Circle() - square = Square() - -``Circle()`` and ``Square()`` create :class:`~mobject.geometry.Circle` and :class:`~mobject.geometry.Square`. - -Both of these are instances of :class:`~mobject.mobject.Mobject` subclasses, the base class for objects in manim. Note -that instantiating a :class:`~mobject.mobject.Mobject` does not add it to the -:class:`~scene.scene.Scene`, so you wouldn't see anything if you were to render -the :class:`~scene.scene.Scene` at this point. - -.. code-block:: python - :lineno-start: 7 - - square.flip(RIGHT) - square.rotate(-3 * TAU / 8) - circle.set_fill(PINK, opacity=0.5) - -``flip()`` ``rotate()`` ``set_fill()`` apply various modifications to the mobjects before animating -them. The call to :meth:`~mobject.mobject.Mobject.flip` flips the -:class:`~mobject.geometry.Square` across the RIGHT vector. This is equivalent -to a refection across the x-axis. - -The call to :meth:`~mobject.mobject.Mobject.rotate` rotates the -:class:`~mobject.geometry.Square` 3/8ths of a full rotation counterclockwise. - -The call to :meth:`~mobject.mobject.Mobject.set_fill` sets -the fill color for the :class:`~mobject.geometry.Circle` to pink, and its opacity to 0.5. - -.. code-block:: python - :lineno-start: 11 - - self.play(ShowCreation(square)) - self.play(Transform(square, circle)) - self.play(FadeOut(square)) - -To generated animation, :class:`~animation.animation.Animation` classes are used. - -Each :class:`~animation.animation.Animation` takes one or more :class:`~mobject.mobject.Mobject` instances as arguments, which it animates -when passed to :meth:`~scene.scene.Scene.play`. This is how video is typically -created in manim. - -:class:`~mobject.mobject.Mobject` instances are automatically -added to the :class:`~scene.scene.Scene` when they are animated. You can add a -:class:`~mobject.mobject.Mobject` to the :class:`~scene.scene.Scene` manually -by passing it as an argument to :meth:`~scene.scene.Scene.add`. - - -:class:`~animation.creation.ShowCreation` draws a :class:`~mobject.mobject.Mobject` to the screen. - -:class:`~animation.transform.Transform` morphs one :class:`~mobject.mobject.Mobject` into another. - -:class:`~animation.creation.FadeOut` fades a :class:`~mobject.mobject.Mobject` out of the :class:`~scene.scene.Scene`. - -.. note:: - - Only the first argument to :class:`~animation.transform.Transform` is modified, - the second is not added to the :class:`~scene.scene.Scene`. :class:`~animation.tranform.Transform` - only changes the appearance but not the underlying properties. - - After the call to ``transform()`` ``square`` is still a :class:`~mobject.geometry.Square` instance - but with the shape of :class:`~mobject.geometry.Circle`. diff --git a/docs/source/getting_started/making_a_scene.rst b/docs/source/getting_started/making_a_scene.rst deleted file mode 100644 index 619cb571..00000000 --- a/docs/source/getting_started/making_a_scene.rst +++ /dev/null @@ -1,15 +0,0 @@ -Making a Scene -============== - -A scene is what renders when manim is executed. Each scene contains mobjects, which can then be animated as -previously explained. In code, a scene is a class that extends ``Scene`` and implements the ``construct`` -function, like so. Manim will execute this function to render the scene. - -.. code-block:: python - :linenos: - - from manimlib.imports import * - - class ExampleScene(Scene): - def construct(self): - # Add and animate mobjects here \ No newline at end of file diff --git a/docs/source/getting_started/mathematical_objects.rst b/docs/source/getting_started/mathematical_objects.rst deleted file mode 100644 index ebe595b6..00000000 --- a/docs/source/getting_started/mathematical_objects.rst +++ /dev/null @@ -1,13 +0,0 @@ -Mathematical Objects -==================== - -Everything that appears on screen in a manim video is a -:class:`~mobject.mobject.Mobject`, or Mathematical Object. A -:class:`~mobject.mobject.Mobject`'s appearance is determined by 3 -factors: - -* ``m.points``, an Nx3 ``numpy.array`` specifying how to draw ``m`` -* ``m``'s style attributes, such as ``m.color``, ``m.stroke_width``, and - ``m.fill_opacity`` -* ``m.submobjects``, a list of :class:`~mobject.mobject.Mobject` instances that - are considered part of ``m`` diff --git a/docs/source/index.rst b/docs/source/index.rst deleted file mode 100644 index 865bd82c..00000000 --- a/docs/source/index.rst +++ /dev/null @@ -1,30 +0,0 @@ -.. Manim documentation master file, created by - sphinx-quickstart on Mon May 27 14:19:19 2019. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -Welcome to Manim's documentation! -================================= - -These docs are generated from the master branch of the -`Manim repo `_. You can contribute by submitting -a pull request there. - -.. toctree:: - :maxdepth: 2 - :caption: Contents - - about - installation/index - getting_started/index - coordinate - animation - constants - - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` diff --git a/docs/source/installation/index.rst b/docs/source/installation/index.rst deleted file mode 100644 index 664d154d..00000000 --- a/docs/source/installation/index.rst +++ /dev/null @@ -1,12 +0,0 @@ -Installation -============ - -Instructions on installing Manim - -.. toctree:: - :maxdepth: 2 - :caption: Contents - - linux - mac - windows diff --git a/docs/source/installation/linux.rst b/docs/source/installation/linux.rst deleted file mode 100644 index ff11bc3c..00000000 --- a/docs/source/installation/linux.rst +++ /dev/null @@ -1,64 +0,0 @@ -Linux -===== - -Ubuntu ------- - -Install system libraries:: - - # apt install sox ffmpeg libcairo2 libcairo2-dev - -Install Latex distribution:: - - # apt install texlive-full - -Install manim via pypi:: - - # pip3 install manimlib - -OR Install manim via the git repository with venv:: - - $ git clone https://github.com/3b1b/manim - $ cd manim - $ python3 -m venv ./ - $ source bin/activate - $ pip3 install -r requirement.txt - -To use manim in virtual environment you need to activate the environment with -the ``activate`` binary by doing ``source bin/activate``, to exit use the ``deactivate`` command. - -.. note:: The git repository is updated first before the one on pypi. The git repository also - includes project files used to produce 3b1b videos. Some of the old projects might not - work as due to api changes. - - -.. note:: The required latex packages are dictated by - ``manimlib/tex_template.tex`` which ``texlive-full`` will satisfy. The download size - can be quite large. If you wish to install only the packages required to use - manim, substitude ``texlive-full`` with:: - - texlive texlive-latex-extra texlive-fonts-extra - texlive-latex-recommended texlive-science texlive-fonts-extra tipa - -Arch Linux ----------- -Install system libraries:: - - # pacman -S cairo ffmpeg opencv sox - -Install Latex distribution:: - - # pacman -S texlive-most - -OR install python-manimlib_:sup:`AUR` package:: - - $ git clone https://aur.archlinux.org/python-manimlib.git - $ cd python-manimlib - $ makepkg -si - -You can use AUR helpers such as yay_:sup:`AUR`:: - - $ yay -S python-manimlib - -.. _python-manimlib: https://aur.archlinux.org/packages/python-manimlib/ -.. _yay: https://aur.archlinux.org/packages/yay/ diff --git a/docs/source/installation/mac.rst b/docs/source/installation/mac.rst deleted file mode 100644 index 43c7bfdb..00000000 --- a/docs/source/installation/mac.rst +++ /dev/null @@ -1,12 +0,0 @@ -Mac -=== - -The simplest way to install the system dependencies on Mac OS X is with Homebrew. -Mac come preinstalled with python2, but to use manim, python3 is required - -1. Install python3 https://docs.python.org/3/using/mac.html -2. Install Cairo: ``brew install cairo`` -3. Install Sox: ``brew install sox`` -4. Install ffmpeg: ``brew install ffmpeg`` -5. Install latex (MacTeX): ``brew cask install mactex`` -6. Install manimlib ``pip install manimlib`` (or ``pip install --user manimlib`` to just yourself) diff --git a/docs/source/installation/windows.rst b/docs/source/installation/windows.rst deleted file mode 100644 index e58d125c..00000000 --- a/docs/source/installation/windows.rst +++ /dev/null @@ -1,60 +0,0 @@ -Windows -======= - -Install System Libraries ------------------------- - -Make sure you have *Python 3* for Windows installed first: - -https://www.python.org/downloads/windows/ - -Install ffmpeg: - -https://ffmpeg.org/download.html#build-windows - -Install sox: - -http://sox.sourceforge.net/Main/HomePage - -Install a latex distribution. On Windows MikTex is commonly used: - -https://miktex.org/howto/install-miktex - -Path configuration ------------------- - -To invoke commandline without supplying path to the binary -the PATH environment needs to be configured. Below are template examples, please change -the path according to your username and specific python version. Assuming all the -softwares are installed with no alteration to the installation paths:: - - C:\Users\$username\AppData\local\Programs\Python\Python$version\ - C:\Users\$username\AppData\local\Programs\Python\Python$version\Scripts\ - C:\MikTex\miktex\bin\x64\ - C:\ffmpeg\bin\ - -The path entries should be separated by semicolon. - -Installing python packages and manim ------------------------------------- - -Make sure you can start pip using ``pip`` in your commandline. Then do -``pip install pyreadline`` for the ``readline`` package. - -Grab the pycairo wheel binary ``pycairo‑1.18.0‑cp37‑cp37m‑win32.whl`` from https://www.lfd.uci.edu/~gohlke/pythonlibs/#pycairo -and install it via ``python -m pip install C:\absolute\path\to\the\whl\file`` - -clone the manim repository if you have git ``git clone https://github.com/3b1b/manim`` or download the zip file from -the repository page with ``Clone or download`` button and unzip it. - -Open the commandline within the manim directory with ``Shift + Right click`` on an empty space in the folder and select ``open command window here`` - -Install manim python dependencies with ``pip install -r requirements.txt`` - -Test the installation ---------------------- - -Type in ``python -m manim -h`` and if nothing went wrong during the installation process you should see the help text. - -Use ``python -m manim example_scenes.py SquareToCircle -pl`` to render the example scene and the file should play after rendering. The movie file should be -in ``media/videos/example_scenes/480p15`` diff --git a/travis/build_docs.sh b/travis/build_docs.sh deleted file mode 100755 index 09952375..00000000 --- a/travis/build_docs.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -pip install sphinx_rtd_theme -make --directory docs/ html -openssl aes-256-cbc -K $encrypted_1b28e850a424_key \ - -iv $encrypted_1b28e850a424_iv \ - -in travis/crypt.enc \ - -out travis/crypt -d -tar xf travis/crypt -travis/deploy_docs.sh diff --git a/travis/crypt.enc b/travis/crypt.enc deleted file mode 100644 index 00fc7025..00000000 Binary files a/travis/crypt.enc and /dev/null differ