From e59178dae7d2cd7034740aafe3ca02524a3e957f Mon Sep 17 00:00:00 2001 From: Devin Neal Date: Sun, 12 May 2019 23:40:41 -0700 Subject: [PATCH 01/12] copy docs --- docs/Makefile | 19 ++ docs/about.rst | 11 ++ docs/animation.rst | 82 ++++++++ docs/camera.rst | 42 ++++ docs/conf.py | 184 ++++++++++++++++++ docs/continual_animation.rst | 34 ++++ docs/getting_started.rst | 18 ++ docs/getting_started/animating_mobjects.rst | 4 + docs/getting_started/learning_by_example.rst | 132 +++++++++++++ docs/getting_started/making_a_scene.rst | 4 + docs/getting_started/mathematical_objects.rst | 13 ++ docs/index.rst | 38 ++++ docs/install.rst | 18 ++ docs/make.bat | 35 ++++ docs/mobject.rst | 134 +++++++++++++ docs/mobject.svg.rst | 46 +++++ docs/mobject.types.rst | 38 ++++ docs/modules.rst | 7 + docs/scene.rst | 74 +++++++ docs/utils.rst | 116 +++++++++++ 20 files changed, 1049 insertions(+) create mode 100644 docs/Makefile create mode 100644 docs/about.rst create mode 100644 docs/animation.rst create mode 100644 docs/camera.rst create mode 100644 docs/conf.py create mode 100644 docs/continual_animation.rst create mode 100644 docs/getting_started.rst create mode 100644 docs/getting_started/animating_mobjects.rst create mode 100644 docs/getting_started/learning_by_example.rst create mode 100644 docs/getting_started/making_a_scene.rst create mode 100644 docs/getting_started/mathematical_objects.rst create mode 100644 docs/index.rst create mode 100644 docs/install.rst create mode 100644 docs/make.bat create mode 100644 docs/mobject.rst create mode 100644 docs/mobject.svg.rst create mode 100644 docs/mobject.types.rst create mode 100644 docs/modules.rst create mode 100644 docs/scene.rst create mode 100644 docs/utils.rst diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 00000000..298ea9e2 --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,19 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +SOURCEDIR = . +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/about.rst b/docs/about.rst new file mode 100644 index 00000000..26884a79 --- /dev/null +++ b/docs/about.rst @@ -0,0 +1,11 @@ +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 the the +information here will make it easier for newcomers to get started using +``manim``. diff --git a/docs/animation.rst b/docs/animation.rst new file mode 100644 index 00000000..b251bb35 --- /dev/null +++ b/docs/animation.rst @@ -0,0 +1,82 @@ +``animation`` --- Making things move +==================================== + +``animation.animation`` +-------------------------- + +.. automodule:: animation.animation + :members: + :undoc-members: + :show-inheritance: + +``animation.composition`` +---------------------------- + +.. automodule:: animation.composition + :members: + :undoc-members: + :show-inheritance: + +``animation.creation`` +------------------------- + +.. automodule:: animation.creation + :members: + :undoc-members: + :show-inheritance: + +``animation.indication`` +--------------------------- + +.. automodule:: animation.indication + :members: + :undoc-members: + :show-inheritance: + +``animation.movement`` +------------------------- + +.. automodule:: animation.movement + :members: + :undoc-members: + :show-inheritance: + +``animation.numbers`` +------------------------ + +.. automodule:: animation.numbers + :members: + :undoc-members: + :show-inheritance: + +``animation.rotation`` +------------------------- + +.. automodule:: animation.rotation + :members: + :undoc-members: + :show-inheritance: + +``animation.specialized`` +---------------------------- + +.. automodule:: animation.specialized + :members: + :undoc-members: + :show-inheritance: + +``animation.transform`` +-------------------------- + +.. automodule:: animation.transform + :members: + :undoc-members: + :show-inheritance: + +``animation.update`` +----------------------- + +.. automodule:: animation.update + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/camera.rst b/docs/camera.rst new file mode 100644 index 00000000..025849d8 --- /dev/null +++ b/docs/camera.rst @@ -0,0 +1,42 @@ +``camera`` --- Create Images +============================ + +``camera.camera`` +-------------------- + +.. automodule:: camera.camera + :members: + :undoc-members: + :show-inheritance: + +``camera.mapping_camera`` +----------------------------- + +.. automodule:: camera.mapping_camera + :members: + :undoc-members: + :show-inheritance: + +``camera.moving_camera`` +---------------------------- + +.. automodule:: camera.moving_camera + :members: + :undoc-members: + :show-inheritance: + +``camera.multi_camera`` +--------------------------- + +.. automodule:: camera.multi_camera + :members: + :undoc-members: + :show-inheritance: + +``camera.three_d_camera`` +------------------------------ + +.. automodule:: camera.three_d_camera + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 00000000..b756f52d --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,184 @@ +# -*- coding: utf-8 -*- +# +# Configuration file for the Sphinx documentation builder. +# +# This file does only contain 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('.')) +import sys +import os +sys.path.insert(0, os.path.abspath("..")) + + +# -- Project information ----------------------------------------------------- + +project = 'manim' +copyright = '2018, 3Blue1Brown, EulerTour' +author = '3Blue1Brown, EulerTour' + +# The short X.Y version +version = '' +# The full version, including alpha/beta/rc tags +release = '0.1' + + +# -- General configuration --------------------------------------------------- + +# If your documentation needs a minimal Sphinx version, state it here. +# +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.autodoc', + 'sphinx.ext.coverage', + 'sphinx.ext.mathjax', + 'sphinx.ext.viewcode', +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The master toctree document. +master_doc = 'index' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# 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 = ['_build', 'Thumbs.db', '.DS_Store'] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = None + + +# -- 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' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +html_theme_options = { + 'collapse_navigation': False, +} + +# 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 = ['_static'] + +# Custom sidebar templates, must be a dictionary that maps document names +# to template names. +# +# The default sidebars (for documents that don't match any pattern) are +# defined by theme itself. Builtin themes are using these templates by +# default: ``['localtoc.html', 'relations.html', 'sourcelink.html', +# 'searchbox.html']``. +# +# html_sidebars = {} + + +# -- Options for HTMLHelp output --------------------------------------------- + +# Output file base name for HTML help builder. +htmlhelp_basename = 'manimdoc' + + +# -- Options for LaTeX output ------------------------------------------------ + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + # + # 'preamble': '', + + # Latex figure (float) alignment + # + # 'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'manim.tex', 'manim Documentation', + '3Blue1Brown, EulerTour', 'manual'), +] + + +# -- Options for manual page output ------------------------------------------ + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'manim', 'manim Documentation', + [author], 1) +] + + +# -- Options for Texinfo output ---------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'manim', 'manim Documentation', + author, 'manim', 'One line description of project.', + 'Miscellaneous'), +] + + +# -- Options for Epub output ------------------------------------------------- + +# Bibliographic Dublin Core info. +epub_title = project + +# The unique identifier of the text. This can be a ISBN number +# or the project homepage. +# +# epub_identifier = '' + +# A unique identification for the text. +# +# epub_uid = '' + +# A list of files that should not be packed into the epub file. +epub_exclude_files = ['search.html'] + + +# -- Extension configuration ------------------------------------------------- diff --git a/docs/continual_animation.rst b/docs/continual_animation.rst new file mode 100644 index 00000000..062aae56 --- /dev/null +++ b/docs/continual_animation.rst @@ -0,0 +1,34 @@ +``continual_animation`` --- Animations in the Background +======================================================== + +``continual_animation.continual_animation`` +------------------------------------------------ + +.. automodule:: continual_animation.continual_animation + :members: + :undoc-members: + :show-inheritance: + +``continual_animation.from_animation`` +------------------------------------------- + +.. automodule:: continual_animation.from_animation + :members: + :undoc-members: + :show-inheritance: + +``continual_animation.numbers`` +----------------------------------- + +.. automodule:: continual_animation.numbers + :members: + :undoc-members: + :show-inheritance: + +``continual_animation.update`` +---------------------------------- + +.. automodule:: continual_animation.update + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/getting_started.rst b/docs/getting_started.rst new file mode 100644 index 00000000..9fd299ff --- /dev/null +++ b/docs/getting_started.rst @@ -0,0 +1,18 @@ +Getting Started +=============== + +Todd Zimmerman put together `a very nice tutorial`_ on getting started with +``manim``, but is unfortunately outdated. It's still useful for understanding +how ``manim`` is used, but the examples won't run on the latest version of +``manim``. + +.. _a very nice tutorial: https://talkingphysics.wordpress.com/2018/06/11/learning-how-to-animate-videos-using-``manim``-series-a-journey/ + +.. toctree:: + :caption: Contents: + :maxdepth: 2 + + getting_started/learning_by_example + getting_started/mathematical_objects + getting_started/animating_mobjects + getting_started/making_a_scene diff --git a/docs/getting_started/animating_mobjects.rst b/docs/getting_started/animating_mobjects.rst new file mode 100644 index 00000000..efc0a109 --- /dev/null +++ b/docs/getting_started/animating_mobjects.rst @@ -0,0 +1,4 @@ +Animating Mobjects +================== + +Learn about animations. diff --git a/docs/getting_started/learning_by_example.rst b/docs/getting_started/learning_by_example.rst new file mode 100644 index 00000000..5ad19693 --- /dev/null +++ b/docs/getting_started/learning_by_example.rst @@ -0,0 +1,132 @@ +Learning by Example +=================== + +You create videos in manim by writing :class:`~scene.scene.Scene` instances. +``example_scenes.py`` contains a few simple ones that we can use to learn about +manim. For instance, take ``SquareToCircle``. + +.. code-block:: python + :linenos: + + 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)) + +:meth:`~scene.scene.Scene.construct` specifies what is displayed on the screen +when the :class:`~scene.scene.Scene` is rendered to video. You can render a +:class:`~scene.scene.Scene` by running ``extract_scene.py``. Run ``python +extract_scene.py -h`` to see how it's used. + +.. code-block:: none + + > python extract_scene.py -h + usage: extract_scene.py [-h] [-p] [-w] [-s] [-l] [-m] [-g] [-f] [-t] [-q] [-a] + [-o OUTPUT_NAME] [-n START_AT_ANIMATION_NUMBER] + [-r RESOLUTION] [-c COLOR] [-d OUTPUT_DIRECTORY] + file [scene_name] + + positional arguments: + file path to file holding the python code for the scene + scene_name Name of the Scene class you want to see + + optional arguments: + -h, --help show this help message and exit + -p, --preview + -w, --write_to_movie + -s, --show_last_frame + -l, --low_quality + -m, --medium_quality + -g, --save_pngs + -f, --show_file_in_finder + -t, --transparent + -q, --quiet + -a, --write_all + -o OUTPUT_NAME, --output_name OUTPUT_NAME + -n START_AT_ANIMATION_NUMBER, --start_at_animation_number START_AT_ANIMATION_NUMBER + -r RESOLUTION, --resolution RESOLUTION + -c COLOR, --color COLOR + -d OUTPUT_DIRECTORY, --output_directory OUTPUT_DIRECTORY + +The most common flags are ``-p``, to automatically play the generated video, +``-l``, to render in lower quality in favor of speed, and ``-s``, to show the +last frame of the :class:`~scene.scene.Scene` for faster development. Run +``python extract_scene.py example_scenes.py SquareToCircle -pl`` to produce a +file called SquareToCircle.mp4 in the media directory that you have configured, +and automatically play it. + +.. raw:: html + + + +Let's step through each line of the :class:`~scene.scene.Scene`. Lines 3 and 4 +instantiate a :class:`~mobject.geometry.Circle` and +:class:`~mobject.geometry.Square`, respectively. Both of these subclass +:class:`~mobject.mobject.Mobject`, 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 + :linenos: + :lineno-start: 3 + + circle = Circle() + square = Square() + +Lines 5, 6, and 7 apply various modifications to the mobjects before animating +them. The call to :meth:`~mobject.mobject.Mobject.flip` on line 5 flips the +:class:`~mobject.geometry.Square` across the RIGHT vector. This is equivalent +to a refection across the x-axis. Then the call to +:meth:`~mobject.mobject.Mobject.rotate` on line 6 rotates the +:class:`~mobject.geometry.Square` 3/8ths of a full rotation counterclockwise. +Finally, the call to :meth:`~mobject.mobject.Mobject.set_fill` on line 7 sets +the fill color for the :class:`~mobject.geometry.Circle` to pink, and its +opacity to 0.5. + +.. code-block:: python + :linenos: + :lineno-start: 5 + + square.flip(RIGHT) + square.rotate(-3 * TAU / 8) + circle.set_fill(PINK, opacity=0.5) + +Line 9 is the first to generate video. +:class:`~animation.creation.ShowCreation`, +:class:`~animation.transform.Transform`, and +:class:`~animation.creation.FadeOut` are +:class:`~animation.animation.Animation` instances. 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`. + +.. code-block:: python + :linenos: + :lineno-start: 9 + + self.play(ShowCreation(square)) + self.play(Transform(square, circle)) + self.play(FadeOut(square)) + +: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, and +:class:`~animation.creation.FadeOut` fades a +:class:`~mobject.mobject.Mobject` out of the :class:`~scene.scene.Scene`. Note +that only the first argument to :class:`~animation.transform.Transform` is +modified, and the second is not added to the :class:`~scene.scene.Scene`. After +line 10 is executed ``square`` is a :class:`~mobject.geometry.Square` instance +with the shape of a :class:`~mobject.geometry.Circle`. diff --git a/docs/getting_started/making_a_scene.rst b/docs/getting_started/making_a_scene.rst new file mode 100644 index 00000000..3fe9fc32 --- /dev/null +++ b/docs/getting_started/making_a_scene.rst @@ -0,0 +1,4 @@ +Making a Scene +============== + +Talk about Scenes and organization, bring it all together. diff --git a/docs/getting_started/mathematical_objects.rst b/docs/getting_started/mathematical_objects.rst new file mode 100644 index 00000000..ebe595b6 --- /dev/null +++ b/docs/getting_started/mathematical_objects.rst @@ -0,0 +1,13 @@ +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/index.rst b/docs/index.rst new file mode 100644 index 00000000..f57b2304 --- /dev/null +++ b/docs/index.rst @@ -0,0 +1,38 @@ +.. manim documentation master file, created by + sphinx-quickstart on Sun Sep 23 10:43:32 2018. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +manim +===== + +``manim`` is an animation engine for explanatory math videos. It uses Python to +make creating precise 2D animations simple and easy. + +.. toctree:: + :caption: Contents: + :maxdepth: 2 + + about + install + getting_started + +.. toctree:: + :caption: Module Index: + :maxdepth: 2 + + mobject + animation + continual_animation + scene + camera + utils + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + + diff --git a/docs/install.rst b/docs/install.rst new file mode 100644 index 00000000..a2819d9a --- /dev/null +++ b/docs/install.rst @@ -0,0 +1,18 @@ +Installation +============ + +This fork of Manim runs on python 3.7 only. Earlier versions of python are not +supported. You can install the python dependencies with ``pip install -r +requirements.txt``. + +manim relies on system libraries you will need to install on your operating +system: + +* ffmpeg +* latex +* sox + +The dockerfile is (should be) the definitive source for everything required by +``manim``. + + diff --git a/docs/make.bat b/docs/make.bat new file mode 100644 index 00000000..27f573b8 --- /dev/null +++ b/docs/make.bat @@ -0,0 +1,35 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=. +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/mobject.rst b/docs/mobject.rst new file mode 100644 index 00000000..53b0a334 --- /dev/null +++ b/docs/mobject.rst @@ -0,0 +1,134 @@ +``mobject`` --- Mathematical Objects +==================================== + +Subpackages +----------- + +.. toctree:: + + mobject.svg + mobject.types + +``mobject.component`` --- Customizable Mobjects +----------------------------------------------- + +.. automodule:: mobject.component + :members: + :undoc-members: + :show-inheritance: + +``mobject.coordinate_systems`` +------------------------------ + +.. automodule:: mobject.coordinate_systems + :members: + :undoc-members: + :show-inheritance: + +``mobject.frame`` +-------------------- + +.. automodule:: mobject.frame + :members: + :undoc-members: + :show-inheritance: + +``mobject.functions`` --- VMobjects from Functions +-------------------------------------------------- + +.. automodule:: mobject.functions + :members: + :undoc-members: + :show-inheritance: + +``mobject.geometry`` --- Geometric Shapes +----------------------------------------- + +.. automodule:: mobject.geometry + :members: + :undoc-members: + :show-inheritance: + +``mobject.matrix`` --- Matrices +------------------------------- + +.. automodule:: mobject.matrix + :members: + :undoc-members: + :show-inheritance: + +``mobject.mobject`` --- Mathematical Objects +-------------------------------------------- + +.. automodule:: mobject.mobject + :members: + :undoc-members: + :show-inheritance: + :member-order: bysource + :exclude-members: + __init__, + CONFIG + +``mobject.number_line`` --- Number Lines +---------------------------------------- + +.. automodule:: mobject.number_line + :members: + :undoc-members: + :show-inheritance: + +``mobject.numbers`` --- Numbers +------------------------------- + +.. automodule:: mobject.numbers + :members: + :undoc-members: + :show-inheritance: + +``mobject.probability`` --- Probaility Visualizations +----------------------------------------------------- + +.. automodule:: mobject.probability + :members: + :undoc-members: + :show-inheritance: + +``mobject.shape_matchers`` --- Fit another Mobject +-------------------------------------------------- + +.. automodule:: mobject.shape_matchers + :members: + :undoc-members: + :show-inheritance: + +``mobject.three_d_shading_utils`` +--------------------------------------- + +.. automodule:: mobject.three_d_shading_utils + :members: + :undoc-members: + :show-inheritance: + +``mobject.three_d_utils`` +------------------------------ + +.. automodule:: mobject.three_d_utils + :members: + :undoc-members: + :show-inheritance: + +``mobject.three_dimensions`` +-------------------------------- + +.. automodule:: mobject.three_dimensions + :members: + :undoc-members: + :show-inheritance: + +``mobject.value_tracker`` +----------------------------- + +.. automodule:: mobject.value_tracker + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/mobject.svg.rst b/docs/mobject.svg.rst new file mode 100644 index 00000000..43c8324c --- /dev/null +++ b/docs/mobject.svg.rst @@ -0,0 +1,46 @@ +mobject.svg package +=================== + +Submodules +---------- + +mobject.svg.brace module +------------------------ + +.. automodule:: mobject.svg.brace + :members: + :undoc-members: + :show-inheritance: + +mobject.svg.drawings module +--------------------------- + +.. automodule:: mobject.svg.drawings + :members: + :undoc-members: + :show-inheritance: + +mobject.svg.svg\_mobject module +------------------------------- + +.. automodule:: mobject.svg.svg_mobject + :members: + :undoc-members: + :show-inheritance: + +mobject.svg.tex\_mobject module +------------------------------- + +.. automodule:: mobject.svg.tex_mobject + :members: + :undoc-members: + :show-inheritance: + + +Module contents +--------------- + +.. automodule:: mobject.svg + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/mobject.types.rst b/docs/mobject.types.rst new file mode 100644 index 00000000..31102bf1 --- /dev/null +++ b/docs/mobject.types.rst @@ -0,0 +1,38 @@ +mobject.types package +===================== + +Submodules +---------- + +mobject.types.image\_mobject module +----------------------------------- + +.. automodule:: mobject.types.image_mobject + :members: + :undoc-members: + :show-inheritance: + +mobject.types.point\_cloud\_mobject module +------------------------------------------ + +.. automodule:: mobject.types.point_cloud_mobject + :members: + :undoc-members: + :show-inheritance: + +mobject.types.vectorized\_mobject module +---------------------------------------- + +.. automodule:: mobject.types.vectorized_mobject + :members: + :undoc-members: + :show-inheritance: + + +Module contents +--------------- + +.. automodule:: mobject.types + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/modules.rst b/docs/modules.rst new file mode 100644 index 00000000..c1198014 --- /dev/null +++ b/docs/modules.rst @@ -0,0 +1,7 @@ +mobject +======= + +.. toctree:: + :maxdepth: 4 + + mobject diff --git a/docs/scene.rst b/docs/scene.rst new file mode 100644 index 00000000..43299155 --- /dev/null +++ b/docs/scene.rst @@ -0,0 +1,74 @@ +``scene`` --- Organize Animations +================================= + +``scene.graph_scene`` +------------------------- + +.. automodule:: scene.graph_scene + :members: + :undoc-members: + :show-inheritance: + +``scene.moving_camera_scene`` +---------------------------------- + +.. automodule:: scene.moving_camera_scene + :members: + :undoc-members: + :show-inheritance: + +``scene.reconfigurable_scene`` +---------------------------------- + +.. automodule:: scene.reconfigurable_scene + :members: + :undoc-members: + :show-inheritance: + +``scene.sample_space_scene`` +--------------------------------- + +.. automodule:: scene.sample_space_scene + :members: + :undoc-members: + :show-inheritance: + +``scene.scene`` +------------------ + +.. automodule:: scene.scene + :members: + :undoc-members: + :show-inheritance: + +``scene.scene_from_video`` +------------------------------- + +.. automodule:: scene.scene_from_video + :members: + :undoc-members: + :show-inheritance: + +``scene.three_d_scene`` +---------------------------- + +.. automodule:: scene.three_d_scene + :members: + :undoc-members: + :show-inheritance: + +``scene.vector_space_scene`` +--------------------------------- + +.. automodule:: scene.vector_space_scene + :members: + :undoc-members: + :show-inheritance: + +``scene.zoomed_scene`` +-------------------------- + +.. automodule:: scene.zoomed_scene + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/utils.rst b/docs/utils.rst new file mode 100644 index 00000000..b367f97b --- /dev/null +++ b/docs/utils.rst @@ -0,0 +1,116 @@ +``utils`` --- Make Common Tasks Easier +====================================== + +``utils.bezier module`` +------------------- + +.. automodule:: utils.bezier + :members: + :undoc-members: + :show-inheritance: + +``utils.color module`` +------------------ + +.. automodule:: utils.color + :members: + :undoc-members: + :show-inheritance: + +``utils.config_ops module`` +------------------------ + +.. automodule:: utils.config_ops + :members: + :undoc-members: + :show-inheritance: + +``utils.images module`` +------------------- + +.. automodule:: utils.images + :members: + :undoc-members: + :show-inheritance: + +``utils.iterables module`` +---------------------- + +.. automodule:: utils.iterables + :members: + :undoc-members: + :show-inheritance: + +``utils.output_directory_getters module`` +--------------------------------------- + +.. automodule:: utils.output_directory_getters + :members: + :undoc-members: + :show-inheritance: + +``utils.paths module`` +------------------ + +.. automodule:: utils.paths + :members: + :undoc-members: + :show-inheritance: + +``utils.rate_functions module`` +---------------------------- + +.. automodule:: utils.rate_functions + :members: + :undoc-members: + :show-inheritance: + +``utils.save module`` +----------------- + +.. automodule:: utils.save + :members: + :undoc-members: + :show-inheritance: + +``utils.simple_functions module`` +------------------------------ + +.. automodule:: utils.simple_functions + :members: + :undoc-members: + :show-inheritance: + +``utils.sounds module`` +------------------- + +.. automodule:: utils.sounds + :members: + :undoc-members: + :show-inheritance: + +``utils.space_ops module`` +----------------------- + +.. automodule:: utils.space_ops + :members: + :undoc-members: + :show-inheritance: + +``utils.strings module`` +-------------------- + +.. automodule:: utils.strings + :members: + :undoc-members: + :show-inheritance: + +``utils.tex_file_writing module`` +------------------------------- + +.. automodule:: utils.tex_file_writing + :members: + :undoc-members: + :show-inheritance: + + From 17558a4bd516526ec7f7b20adfb9ed489f5d261e Mon Sep 17 00:00:00 2001 From: Yoshi Askharoun Date: Mon, 27 May 2019 19:00:48 -0700 Subject: [PATCH 02/12] Update pycairo requirement Many issues, such as #535, stem from the odd installation procedure of cairo and pycairo on Windows. By changing the pycairo requirement in requirements.txt, pip will no longer attempt to uninstall the working version. This should have no effect on the functionality of manim, though new installations are likely to default to pycairo 1.18.0 now. --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 33c71720..df5fe407 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,5 +6,5 @@ progressbar==2.5 scipy==1.1.0 tqdm==4.24.0 opencv-python==3.4.2.17 -pycairo==1.17.1 +pycairo>=1.17.1 pydub==0.23.0 From 5d4897bd50ec70c796dee69d4440aefc66558a8d Mon Sep 17 00:00:00 2001 From: Kolloom Date: Tue, 28 May 2019 00:48:25 -0500 Subject: [PATCH 03/12] Add installation documentation for ubuntu --- docs/source/installation/linux.rst | 39 +++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/docs/source/installation/linux.rst b/docs/source/installation/linux.rst index ff9333b3..ddf96bd7 100644 --- a/docs/source/installation/linux.rst +++ b/docs/source/installation/linux.rst @@ -1,4 +1,41 @@ Linux ===== -A stub for linux installation +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 From a4c8302c55c0f57c69555590d0d9b58c2968319a Mon Sep 17 00:00:00 2001 From: Devin Neal Date: Mon, 27 May 2019 23:08:43 -0700 Subject: [PATCH 04/12] first attempt at deploying docs --- .travis.yml | 7 +++++++ travis/crypt.enc | Bin 0 -> 10256 bytes 2 files changed, 7 insertions(+) create mode 100644 travis/crypt.enc diff --git a/.travis.yml b/.travis.yml index 319b6b0e..6f52cb1b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,6 +4,9 @@ dist: xenial # required for Python 3.7 (travis-ci/travis-ci#9069) python: "3.7" cache: pip +env: + global: + secure: GYWORGegczM/4Nuir8nOh5PHQkAONDuwqIIcJIFE1v32DpIAhIocEX5MuZ/a5A+0bcBg63D4tJDE58ZIhFzKeAzmky4rkSlfmDUyE/vKe6Rr2C9NBGrO7mlTpUrEPkxIRAjQq1q4oHJEkKoXZRd/Sv3Zcs0sYjO9xJhOErEn4Sp2Yn4Qs62Ibvu9yR3mKZ3529k58kVX7iPSsQWIzpYWAQfOeap2Pjts6WuB1O/Gec40jiQ8VyTO+IC9vfH5txX3epkk2vRwra3IQ6RNRqblAXVRlg7LRLi9NUOQyBXfl36OsJ3jg2X+kS3xp5AO9Cz3ZOGiJx1pGNpyrfIKVFXdMaQHjR+9QDhFK2VC9j2RYqTlrK1yVrganlfSSJ3+U/OhjBGIakPYTj4ncJ+OPcyaycnqtGbBrAo5Xza5u9++9S94Qa6KFn/sZEs9y/K9rWggV5y2fZgJa2x6poZKwV3aVJTLeF8FgcvnHwdZuFRaQJ2WqXWuEunYAW3Ov3Ipws4OO9+6Zgb4XahV2o//IMzCWj0z4L7M8qLFu8MgqP41YiV6tHE550cH5WK+XF2PNN7MpVZLaOb28K/zUO4hMHfFuBXmbAgXMjIapxpTm5ab1lG0IVVg1weE81smqDoAOqnUYum3tTIdkBrmxoUnk5zlFaDLZvbGkyvJ7r4GaSgrP6Q= install: - pip install --upgrade pip - pip install -r requirements.txt @@ -16,6 +19,10 @@ before_script: script: - python setup.py test - python setup.py bdist_wheel +after_success: + - openssl aes-256-cbc -K $encrypted_1b28e850a424_key -iv $encrypted_1b28e850a424_iv -in travis/crypt.enc -out travis/crypt -d + - tar xf travis/crypt + - test $TRAVIS_BRANCH = "master" && test $TRAVIS_PULL_REQUEST = "false" && travis/deploy_docs.sh deploy: provider: pypi user: eulertour diff --git a/travis/crypt.enc b/travis/crypt.enc new file mode 100644 index 0000000000000000000000000000000000000000..32766814748fa0771bc320f6a73e63d92560a958 GIT binary patch literal 10256 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 W-xk9OQg(m1i!% Date: Mon, 27 May 2019 23:39:00 -0700 Subject: [PATCH 05/12] second attempt at deploying docs --- .travis.yml | 3 --- travis/crypt.enc | Bin 10256 -> 10256 bytes 2 files changed, 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 6f52cb1b..8d57910f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,9 +4,6 @@ dist: xenial # required for Python 3.7 (travis-ci/travis-ci#9069) python: "3.7" cache: pip -env: - global: - secure: GYWORGegczM/4Nuir8nOh5PHQkAONDuwqIIcJIFE1v32DpIAhIocEX5MuZ/a5A+0bcBg63D4tJDE58ZIhFzKeAzmky4rkSlfmDUyE/vKe6Rr2C9NBGrO7mlTpUrEPkxIRAjQq1q4oHJEkKoXZRd/Sv3Zcs0sYjO9xJhOErEn4Sp2Yn4Qs62Ibvu9yR3mKZ3529k58kVX7iPSsQWIzpYWAQfOeap2Pjts6WuB1O/Gec40jiQ8VyTO+IC9vfH5txX3epkk2vRwra3IQ6RNRqblAXVRlg7LRLi9NUOQyBXfl36OsJ3jg2X+kS3xp5AO9Cz3ZOGiJx1pGNpyrfIKVFXdMaQHjR+9QDhFK2VC9j2RYqTlrK1yVrganlfSSJ3+U/OhjBGIakPYTj4ncJ+OPcyaycnqtGbBrAo5Xza5u9++9S94Qa6KFn/sZEs9y/K9rWggV5y2fZgJa2x6poZKwV3aVJTLeF8FgcvnHwdZuFRaQJ2WqXWuEunYAW3Ov3Ipws4OO9+6Zgb4XahV2o//IMzCWj0z4L7M8qLFu8MgqP41YiV6tHE550cH5WK+XF2PNN7MpVZLaOb28K/zUO4hMHfFuBXmbAgXMjIapxpTm5ab1lG0IVVg1weE81smqDoAOqnUYum3tTIdkBrmxoUnk5zlFaDLZvbGkyvJ7r4GaSgrP6Q= install: - pip install --upgrade pip - pip install -r requirements.txt diff --git a/travis/crypt.enc b/travis/crypt.enc index 32766814748fa0771bc320f6a73e63d92560a958..e88e29c2a29d7db4f39b3b9d37a22193afd9b39f 100644 GIT binary patch literal 10256 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 W-xk9OQg(m1i!% Date: Mon, 27 May 2019 23:58:05 -0700 Subject: [PATCH 06/12] third attempt at deploying docs --- .travis.yml | 6 ++++++ travis/crypt.enc | Bin 10256 -> 10256 bytes 2 files changed, 6 insertions(+) diff --git a/.travis.yml b/.travis.yml index 8d57910f..8a17c2ac 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,6 +4,10 @@ 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 @@ -17,6 +21,8 @@ script: - python setup.py test - python setup.py bdist_wheel after_success: + - 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 - test $TRAVIS_BRANCH = "master" && test $TRAVIS_PULL_REQUEST = "false" && travis/deploy_docs.sh diff --git a/travis/crypt.enc b/travis/crypt.enc index e88e29c2a29d7db4f39b3b9d37a22193afd9b39f..00fc702572863043265fb1e0375bc5a4bcc0aa2f 100644 GIT binary patch literal 10256 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 WiCO1l43s71V}objUtVdGFc5@KtoAbi literal 10256 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 Date: Tue, 28 May 2019 00:13:27 -0700 Subject: [PATCH 07/12] refactor and test doc deployment --- .travis.yml | 6 +----- docs/source/index.rst | 2 ++ travis/build_docs.sh | 10 ++++++++++ 3 files changed, 13 insertions(+), 5 deletions(-) create mode 100644 travis/build_docs.sh diff --git a/.travis.yml b/.travis.yml index 8a17c2ac..d07da3ac 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,11 +21,7 @@ script: - python setup.py test - python setup.py bdist_wheel after_success: - - 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 - - test $TRAVIS_BRANCH = "master" && test $TRAVIS_PULL_REQUEST = "false" && travis/deploy_docs.sh + - test $TRAVIS_BRANCH = "master" && test $TRAVIS_PULL_REQUEST = "false" && travis/build_docs.sh deploy: provider: pypi user: eulertour diff --git a/docs/source/index.rst b/docs/source/index.rst index 60ba148f..ca0f8e9d 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -6,6 +6,8 @@ Welcome to Manim's documentation! ================================= +test change + .. toctree:: :maxdepth: 2 :caption: Contents: diff --git a/travis/build_docs.sh b/travis/build_docs.sh new file mode 100644 index 00000000..09952375 --- /dev/null +++ b/travis/build_docs.sh @@ -0,0 +1,10 @@ +#!/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 From 78448b4388547bee6da83acf0eed8554b257ef20 Mon Sep 17 00:00:00 2001 From: Devin Neal Date: Tue, 28 May 2019 00:21:10 -0700 Subject: [PATCH 08/12] make build script executable --- travis/build_docs.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 travis/build_docs.sh diff --git a/travis/build_docs.sh b/travis/build_docs.sh old mode 100644 new mode 100755 From c7b5aa6e053a89a31693cea896cf6b2b51af0c50 Mon Sep 17 00:00:00 2001 From: Devin Neal Date: Tue, 28 May 2019 00:36:13 -0700 Subject: [PATCH 09/12] change docs to upstream --- docs/Makefile | 2 +- docs/about.rst | 11 -- docs/animation.rst | 82 -------- docs/camera.rst | 42 ---- docs/conf.py | 184 ------------------ docs/continual_animation.rst | 34 ---- docs/getting_started.rst | 18 -- docs/getting_started/animating_mobjects.rst | 4 - docs/getting_started/learning_by_example.rst | 132 ------------- docs/getting_started/making_a_scene.rst | 4 - docs/getting_started/mathematical_objects.rst | 13 -- docs/index.rst | 38 ---- docs/install.rst | 18 -- docs/mobject.rst | 134 ------------- docs/mobject.svg.rst | 46 ----- docs/mobject.types.rst | 38 ---- docs/modules.rst | 7 - docs/scene.rst | 74 ------- docs/utils.rst | 116 ----------- 19 files changed, 1 insertion(+), 996 deletions(-) delete mode 100644 docs/about.rst delete mode 100644 docs/animation.rst delete mode 100644 docs/camera.rst delete mode 100644 docs/conf.py delete mode 100644 docs/continual_animation.rst delete mode 100644 docs/getting_started.rst delete mode 100644 docs/getting_started/animating_mobjects.rst delete mode 100644 docs/getting_started/learning_by_example.rst delete mode 100644 docs/getting_started/making_a_scene.rst delete mode 100644 docs/getting_started/mathematical_objects.rst delete mode 100644 docs/index.rst delete mode 100644 docs/install.rst delete mode 100644 docs/mobject.rst delete mode 100644 docs/mobject.svg.rst delete mode 100644 docs/mobject.types.rst delete mode 100644 docs/modules.rst delete mode 100644 docs/scene.rst delete mode 100644 docs/utils.rst diff --git a/docs/Makefile b/docs/Makefile index ba501f6f..69fe55ec 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -16,4 +16,4 @@ help: # 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) + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file diff --git a/docs/about.rst b/docs/about.rst deleted file mode 100644 index 26884a79..00000000 --- a/docs/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 the the -information here will make it easier for newcomers to get started using -``manim``. diff --git a/docs/animation.rst b/docs/animation.rst deleted file mode 100644 index b251bb35..00000000 --- a/docs/animation.rst +++ /dev/null @@ -1,82 +0,0 @@ -``animation`` --- Making things move -==================================== - -``animation.animation`` --------------------------- - -.. automodule:: animation.animation - :members: - :undoc-members: - :show-inheritance: - -``animation.composition`` ----------------------------- - -.. automodule:: animation.composition - :members: - :undoc-members: - :show-inheritance: - -``animation.creation`` -------------------------- - -.. automodule:: animation.creation - :members: - :undoc-members: - :show-inheritance: - -``animation.indication`` ---------------------------- - -.. automodule:: animation.indication - :members: - :undoc-members: - :show-inheritance: - -``animation.movement`` -------------------------- - -.. automodule:: animation.movement - :members: - :undoc-members: - :show-inheritance: - -``animation.numbers`` ------------------------- - -.. automodule:: animation.numbers - :members: - :undoc-members: - :show-inheritance: - -``animation.rotation`` -------------------------- - -.. automodule:: animation.rotation - :members: - :undoc-members: - :show-inheritance: - -``animation.specialized`` ----------------------------- - -.. automodule:: animation.specialized - :members: - :undoc-members: - :show-inheritance: - -``animation.transform`` --------------------------- - -.. automodule:: animation.transform - :members: - :undoc-members: - :show-inheritance: - -``animation.update`` ------------------------ - -.. automodule:: animation.update - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/camera.rst b/docs/camera.rst deleted file mode 100644 index 025849d8..00000000 --- a/docs/camera.rst +++ /dev/null @@ -1,42 +0,0 @@ -``camera`` --- Create Images -============================ - -``camera.camera`` --------------------- - -.. automodule:: camera.camera - :members: - :undoc-members: - :show-inheritance: - -``camera.mapping_camera`` ------------------------------ - -.. automodule:: camera.mapping_camera - :members: - :undoc-members: - :show-inheritance: - -``camera.moving_camera`` ----------------------------- - -.. automodule:: camera.moving_camera - :members: - :undoc-members: - :show-inheritance: - -``camera.multi_camera`` ---------------------------- - -.. automodule:: camera.multi_camera - :members: - :undoc-members: - :show-inheritance: - -``camera.three_d_camera`` ------------------------------- - -.. automodule:: camera.three_d_camera - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/conf.py b/docs/conf.py deleted file mode 100644 index b756f52d..00000000 --- a/docs/conf.py +++ /dev/null @@ -1,184 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Configuration file for the Sphinx documentation builder. -# -# This file does only contain 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('.')) -import sys -import os -sys.path.insert(0, os.path.abspath("..")) - - -# -- Project information ----------------------------------------------------- - -project = 'manim' -copyright = '2018, 3Blue1Brown, EulerTour' -author = '3Blue1Brown, EulerTour' - -# The short X.Y version -version = '' -# The full version, including alpha/beta/rc tags -release = '0.1' - - -# -- General configuration --------------------------------------------------- - -# If your documentation needs a minimal Sphinx version, state it here. -# -# needs_sphinx = '1.0' - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [ - 'sphinx.ext.autodoc', - 'sphinx.ext.coverage', - 'sphinx.ext.mathjax', - 'sphinx.ext.viewcode', -] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix(es) of source filenames. -# You can specify multiple suffix as a list of string: -# -# source_suffix = ['.rst', '.md'] -source_suffix = '.rst' - -# The master toctree document. -master_doc = 'index' - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -# -# This is also used if you do content translation via gettext catalogs. -# Usually you set "language" from the command line for these cases. -language = None - -# 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 = ['_build', 'Thumbs.db', '.DS_Store'] - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = None - - -# -- 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' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -# -html_theme_options = { - 'collapse_navigation': False, -} - -# 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 = ['_static'] - -# Custom sidebar templates, must be a dictionary that maps document names -# to template names. -# -# The default sidebars (for documents that don't match any pattern) are -# defined by theme itself. Builtin themes are using these templates by -# default: ``['localtoc.html', 'relations.html', 'sourcelink.html', -# 'searchbox.html']``. -# -# html_sidebars = {} - - -# -- Options for HTMLHelp output --------------------------------------------- - -# Output file base name for HTML help builder. -htmlhelp_basename = 'manimdoc' - - -# -- Options for LaTeX output ------------------------------------------------ - -latex_elements = { - # The paper size ('letterpaper' or 'a4paper'). - # - # 'papersize': 'letterpaper', - - # The font size ('10pt', '11pt' or '12pt'). - # - # 'pointsize': '10pt', - - # Additional stuff for the LaTeX preamble. - # - # 'preamble': '', - - # Latex figure (float) alignment - # - # 'figure_align': 'htbp', -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, -# author, documentclass [howto, manual, or own class]). -latex_documents = [ - (master_doc, 'manim.tex', 'manim Documentation', - '3Blue1Brown, EulerTour', 'manual'), -] - - -# -- Options for manual page output ------------------------------------------ - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - (master_doc, 'manim', 'manim Documentation', - [author], 1) -] - - -# -- Options for Texinfo output ---------------------------------------------- - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) -texinfo_documents = [ - (master_doc, 'manim', 'manim Documentation', - author, 'manim', 'One line description of project.', - 'Miscellaneous'), -] - - -# -- Options for Epub output ------------------------------------------------- - -# Bibliographic Dublin Core info. -epub_title = project - -# The unique identifier of the text. This can be a ISBN number -# or the project homepage. -# -# epub_identifier = '' - -# A unique identification for the text. -# -# epub_uid = '' - -# A list of files that should not be packed into the epub file. -epub_exclude_files = ['search.html'] - - -# -- Extension configuration ------------------------------------------------- diff --git a/docs/continual_animation.rst b/docs/continual_animation.rst deleted file mode 100644 index 062aae56..00000000 --- a/docs/continual_animation.rst +++ /dev/null @@ -1,34 +0,0 @@ -``continual_animation`` --- Animations in the Background -======================================================== - -``continual_animation.continual_animation`` ------------------------------------------------- - -.. automodule:: continual_animation.continual_animation - :members: - :undoc-members: - :show-inheritance: - -``continual_animation.from_animation`` -------------------------------------------- - -.. automodule:: continual_animation.from_animation - :members: - :undoc-members: - :show-inheritance: - -``continual_animation.numbers`` ------------------------------------ - -.. automodule:: continual_animation.numbers - :members: - :undoc-members: - :show-inheritance: - -``continual_animation.update`` ----------------------------------- - -.. automodule:: continual_animation.update - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/getting_started.rst b/docs/getting_started.rst deleted file mode 100644 index 9fd299ff..00000000 --- a/docs/getting_started.rst +++ /dev/null @@ -1,18 +0,0 @@ -Getting Started -=============== - -Todd Zimmerman put together `a very nice tutorial`_ on getting started with -``manim``, but is unfortunately outdated. It's still useful for understanding -how ``manim`` is used, but the examples won't run on the latest version of -``manim``. - -.. _a very nice tutorial: https://talkingphysics.wordpress.com/2018/06/11/learning-how-to-animate-videos-using-``manim``-series-a-journey/ - -.. toctree:: - :caption: Contents: - :maxdepth: 2 - - getting_started/learning_by_example - getting_started/mathematical_objects - getting_started/animating_mobjects - getting_started/making_a_scene diff --git a/docs/getting_started/animating_mobjects.rst b/docs/getting_started/animating_mobjects.rst deleted file mode 100644 index efc0a109..00000000 --- a/docs/getting_started/animating_mobjects.rst +++ /dev/null @@ -1,4 +0,0 @@ -Animating Mobjects -================== - -Learn about animations. diff --git a/docs/getting_started/learning_by_example.rst b/docs/getting_started/learning_by_example.rst deleted file mode 100644 index 5ad19693..00000000 --- a/docs/getting_started/learning_by_example.rst +++ /dev/null @@ -1,132 +0,0 @@ -Learning by Example -=================== - -You create videos in manim by writing :class:`~scene.scene.Scene` instances. -``example_scenes.py`` contains a few simple ones that we can use to learn about -manim. For instance, take ``SquareToCircle``. - -.. code-block:: python - :linenos: - - 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)) - -:meth:`~scene.scene.Scene.construct` specifies what is displayed on the screen -when the :class:`~scene.scene.Scene` is rendered to video. You can render a -:class:`~scene.scene.Scene` by running ``extract_scene.py``. Run ``python -extract_scene.py -h`` to see how it's used. - -.. code-block:: none - - > python extract_scene.py -h - usage: extract_scene.py [-h] [-p] [-w] [-s] [-l] [-m] [-g] [-f] [-t] [-q] [-a] - [-o OUTPUT_NAME] [-n START_AT_ANIMATION_NUMBER] - [-r RESOLUTION] [-c COLOR] [-d OUTPUT_DIRECTORY] - file [scene_name] - - positional arguments: - file path to file holding the python code for the scene - scene_name Name of the Scene class you want to see - - optional arguments: - -h, --help show this help message and exit - -p, --preview - -w, --write_to_movie - -s, --show_last_frame - -l, --low_quality - -m, --medium_quality - -g, --save_pngs - -f, --show_file_in_finder - -t, --transparent - -q, --quiet - -a, --write_all - -o OUTPUT_NAME, --output_name OUTPUT_NAME - -n START_AT_ANIMATION_NUMBER, --start_at_animation_number START_AT_ANIMATION_NUMBER - -r RESOLUTION, --resolution RESOLUTION - -c COLOR, --color COLOR - -d OUTPUT_DIRECTORY, --output_directory OUTPUT_DIRECTORY - -The most common flags are ``-p``, to automatically play the generated video, -``-l``, to render in lower quality in favor of speed, and ``-s``, to show the -last frame of the :class:`~scene.scene.Scene` for faster development. Run -``python extract_scene.py example_scenes.py SquareToCircle -pl`` to produce a -file called SquareToCircle.mp4 in the media directory that you have configured, -and automatically play it. - -.. raw:: html - - - -Let's step through each line of the :class:`~scene.scene.Scene`. Lines 3 and 4 -instantiate a :class:`~mobject.geometry.Circle` and -:class:`~mobject.geometry.Square`, respectively. Both of these subclass -:class:`~mobject.mobject.Mobject`, 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 - :linenos: - :lineno-start: 3 - - circle = Circle() - square = Square() - -Lines 5, 6, and 7 apply various modifications to the mobjects before animating -them. The call to :meth:`~mobject.mobject.Mobject.flip` on line 5 flips the -:class:`~mobject.geometry.Square` across the RIGHT vector. This is equivalent -to a refection across the x-axis. Then the call to -:meth:`~mobject.mobject.Mobject.rotate` on line 6 rotates the -:class:`~mobject.geometry.Square` 3/8ths of a full rotation counterclockwise. -Finally, the call to :meth:`~mobject.mobject.Mobject.set_fill` on line 7 sets -the fill color for the :class:`~mobject.geometry.Circle` to pink, and its -opacity to 0.5. - -.. code-block:: python - :linenos: - :lineno-start: 5 - - square.flip(RIGHT) - square.rotate(-3 * TAU / 8) - circle.set_fill(PINK, opacity=0.5) - -Line 9 is the first to generate video. -:class:`~animation.creation.ShowCreation`, -:class:`~animation.transform.Transform`, and -:class:`~animation.creation.FadeOut` are -:class:`~animation.animation.Animation` instances. 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`. - -.. code-block:: python - :linenos: - :lineno-start: 9 - - self.play(ShowCreation(square)) - self.play(Transform(square, circle)) - self.play(FadeOut(square)) - -: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, and -:class:`~animation.creation.FadeOut` fades a -:class:`~mobject.mobject.Mobject` out of the :class:`~scene.scene.Scene`. Note -that only the first argument to :class:`~animation.transform.Transform` is -modified, and the second is not added to the :class:`~scene.scene.Scene`. After -line 10 is executed ``square`` is a :class:`~mobject.geometry.Square` instance -with the shape of a :class:`~mobject.geometry.Circle`. diff --git a/docs/getting_started/making_a_scene.rst b/docs/getting_started/making_a_scene.rst deleted file mode 100644 index 3fe9fc32..00000000 --- a/docs/getting_started/making_a_scene.rst +++ /dev/null @@ -1,4 +0,0 @@ -Making a Scene -============== - -Talk about Scenes and organization, bring it all together. diff --git a/docs/getting_started/mathematical_objects.rst b/docs/getting_started/mathematical_objects.rst deleted file mode 100644 index ebe595b6..00000000 --- a/docs/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/index.rst b/docs/index.rst deleted file mode 100644 index f57b2304..00000000 --- a/docs/index.rst +++ /dev/null @@ -1,38 +0,0 @@ -.. manim documentation master file, created by - sphinx-quickstart on Sun Sep 23 10:43:32 2018. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -manim -===== - -``manim`` is an animation engine for explanatory math videos. It uses Python to -make creating precise 2D animations simple and easy. - -.. toctree:: - :caption: Contents: - :maxdepth: 2 - - about - install - getting_started - -.. toctree:: - :caption: Module Index: - :maxdepth: 2 - - mobject - animation - continual_animation - scene - camera - utils - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` - - diff --git a/docs/install.rst b/docs/install.rst deleted file mode 100644 index a2819d9a..00000000 --- a/docs/install.rst +++ /dev/null @@ -1,18 +0,0 @@ -Installation -============ - -This fork of Manim runs on python 3.7 only. Earlier versions of python are not -supported. You can install the python dependencies with ``pip install -r -requirements.txt``. - -manim relies on system libraries you will need to install on your operating -system: - -* ffmpeg -* latex -* sox - -The dockerfile is (should be) the definitive source for everything required by -``manim``. - - diff --git a/docs/mobject.rst b/docs/mobject.rst deleted file mode 100644 index 53b0a334..00000000 --- a/docs/mobject.rst +++ /dev/null @@ -1,134 +0,0 @@ -``mobject`` --- Mathematical Objects -==================================== - -Subpackages ------------ - -.. toctree:: - - mobject.svg - mobject.types - -``mobject.component`` --- Customizable Mobjects ------------------------------------------------ - -.. automodule:: mobject.component - :members: - :undoc-members: - :show-inheritance: - -``mobject.coordinate_systems`` ------------------------------- - -.. automodule:: mobject.coordinate_systems - :members: - :undoc-members: - :show-inheritance: - -``mobject.frame`` --------------------- - -.. automodule:: mobject.frame - :members: - :undoc-members: - :show-inheritance: - -``mobject.functions`` --- VMobjects from Functions --------------------------------------------------- - -.. automodule:: mobject.functions - :members: - :undoc-members: - :show-inheritance: - -``mobject.geometry`` --- Geometric Shapes ------------------------------------------ - -.. automodule:: mobject.geometry - :members: - :undoc-members: - :show-inheritance: - -``mobject.matrix`` --- Matrices -------------------------------- - -.. automodule:: mobject.matrix - :members: - :undoc-members: - :show-inheritance: - -``mobject.mobject`` --- Mathematical Objects --------------------------------------------- - -.. automodule:: mobject.mobject - :members: - :undoc-members: - :show-inheritance: - :member-order: bysource - :exclude-members: - __init__, - CONFIG - -``mobject.number_line`` --- Number Lines ----------------------------------------- - -.. automodule:: mobject.number_line - :members: - :undoc-members: - :show-inheritance: - -``mobject.numbers`` --- Numbers -------------------------------- - -.. automodule:: mobject.numbers - :members: - :undoc-members: - :show-inheritance: - -``mobject.probability`` --- Probaility Visualizations ------------------------------------------------------ - -.. automodule:: mobject.probability - :members: - :undoc-members: - :show-inheritance: - -``mobject.shape_matchers`` --- Fit another Mobject --------------------------------------------------- - -.. automodule:: mobject.shape_matchers - :members: - :undoc-members: - :show-inheritance: - -``mobject.three_d_shading_utils`` ---------------------------------------- - -.. automodule:: mobject.three_d_shading_utils - :members: - :undoc-members: - :show-inheritance: - -``mobject.three_d_utils`` ------------------------------- - -.. automodule:: mobject.three_d_utils - :members: - :undoc-members: - :show-inheritance: - -``mobject.three_dimensions`` --------------------------------- - -.. automodule:: mobject.three_dimensions - :members: - :undoc-members: - :show-inheritance: - -``mobject.value_tracker`` ------------------------------ - -.. automodule:: mobject.value_tracker - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/mobject.svg.rst b/docs/mobject.svg.rst deleted file mode 100644 index 43c8324c..00000000 --- a/docs/mobject.svg.rst +++ /dev/null @@ -1,46 +0,0 @@ -mobject.svg package -=================== - -Submodules ----------- - -mobject.svg.brace module ------------------------- - -.. automodule:: mobject.svg.brace - :members: - :undoc-members: - :show-inheritance: - -mobject.svg.drawings module ---------------------------- - -.. automodule:: mobject.svg.drawings - :members: - :undoc-members: - :show-inheritance: - -mobject.svg.svg\_mobject module -------------------------------- - -.. automodule:: mobject.svg.svg_mobject - :members: - :undoc-members: - :show-inheritance: - -mobject.svg.tex\_mobject module -------------------------------- - -.. automodule:: mobject.svg.tex_mobject - :members: - :undoc-members: - :show-inheritance: - - -Module contents ---------------- - -.. automodule:: mobject.svg - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/mobject.types.rst b/docs/mobject.types.rst deleted file mode 100644 index 31102bf1..00000000 --- a/docs/mobject.types.rst +++ /dev/null @@ -1,38 +0,0 @@ -mobject.types package -===================== - -Submodules ----------- - -mobject.types.image\_mobject module ------------------------------------ - -.. automodule:: mobject.types.image_mobject - :members: - :undoc-members: - :show-inheritance: - -mobject.types.point\_cloud\_mobject module ------------------------------------------- - -.. automodule:: mobject.types.point_cloud_mobject - :members: - :undoc-members: - :show-inheritance: - -mobject.types.vectorized\_mobject module ----------------------------------------- - -.. automodule:: mobject.types.vectorized_mobject - :members: - :undoc-members: - :show-inheritance: - - -Module contents ---------------- - -.. automodule:: mobject.types - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/modules.rst b/docs/modules.rst deleted file mode 100644 index c1198014..00000000 --- a/docs/modules.rst +++ /dev/null @@ -1,7 +0,0 @@ -mobject -======= - -.. toctree:: - :maxdepth: 4 - - mobject diff --git a/docs/scene.rst b/docs/scene.rst deleted file mode 100644 index 43299155..00000000 --- a/docs/scene.rst +++ /dev/null @@ -1,74 +0,0 @@ -``scene`` --- Organize Animations -================================= - -``scene.graph_scene`` -------------------------- - -.. automodule:: scene.graph_scene - :members: - :undoc-members: - :show-inheritance: - -``scene.moving_camera_scene`` ----------------------------------- - -.. automodule:: scene.moving_camera_scene - :members: - :undoc-members: - :show-inheritance: - -``scene.reconfigurable_scene`` ----------------------------------- - -.. automodule:: scene.reconfigurable_scene - :members: - :undoc-members: - :show-inheritance: - -``scene.sample_space_scene`` ---------------------------------- - -.. automodule:: scene.sample_space_scene - :members: - :undoc-members: - :show-inheritance: - -``scene.scene`` ------------------- - -.. automodule:: scene.scene - :members: - :undoc-members: - :show-inheritance: - -``scene.scene_from_video`` -------------------------------- - -.. automodule:: scene.scene_from_video - :members: - :undoc-members: - :show-inheritance: - -``scene.three_d_scene`` ----------------------------- - -.. automodule:: scene.three_d_scene - :members: - :undoc-members: - :show-inheritance: - -``scene.vector_space_scene`` ---------------------------------- - -.. automodule:: scene.vector_space_scene - :members: - :undoc-members: - :show-inheritance: - -``scene.zoomed_scene`` --------------------------- - -.. automodule:: scene.zoomed_scene - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/utils.rst b/docs/utils.rst deleted file mode 100644 index b367f97b..00000000 --- a/docs/utils.rst +++ /dev/null @@ -1,116 +0,0 @@ -``utils`` --- Make Common Tasks Easier -====================================== - -``utils.bezier module`` -------------------- - -.. automodule:: utils.bezier - :members: - :undoc-members: - :show-inheritance: - -``utils.color module`` ------------------- - -.. automodule:: utils.color - :members: - :undoc-members: - :show-inheritance: - -``utils.config_ops module`` ------------------------- - -.. automodule:: utils.config_ops - :members: - :undoc-members: - :show-inheritance: - -``utils.images module`` -------------------- - -.. automodule:: utils.images - :members: - :undoc-members: - :show-inheritance: - -``utils.iterables module`` ----------------------- - -.. automodule:: utils.iterables - :members: - :undoc-members: - :show-inheritance: - -``utils.output_directory_getters module`` ---------------------------------------- - -.. automodule:: utils.output_directory_getters - :members: - :undoc-members: - :show-inheritance: - -``utils.paths module`` ------------------- - -.. automodule:: utils.paths - :members: - :undoc-members: - :show-inheritance: - -``utils.rate_functions module`` ----------------------------- - -.. automodule:: utils.rate_functions - :members: - :undoc-members: - :show-inheritance: - -``utils.save module`` ------------------ - -.. automodule:: utils.save - :members: - :undoc-members: - :show-inheritance: - -``utils.simple_functions module`` ------------------------------- - -.. automodule:: utils.simple_functions - :members: - :undoc-members: - :show-inheritance: - -``utils.sounds module`` -------------------- - -.. automodule:: utils.sounds - :members: - :undoc-members: - :show-inheritance: - -``utils.space_ops module`` ------------------------ - -.. automodule:: utils.space_ops - :members: - :undoc-members: - :show-inheritance: - -``utils.strings module`` --------------------- - -.. automodule:: utils.strings - :members: - :undoc-members: - :show-inheritance: - -``utils.tex_file_writing module`` -------------------------------- - -.. automodule:: utils.tex_file_writing - :members: - :undoc-members: - :show-inheritance: - - From e93ef301ce0e23b2c46a98cf93e3a550e4034329 Mon Sep 17 00:00:00 2001 From: Devin Neal Date: Tue, 28 May 2019 00:39:00 -0700 Subject: [PATCH 10/12] test pr on docs --- docs/source/index.rst | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/source/index.rst b/docs/source/index.rst index ca0f8e9d..60ba148f 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -6,8 +6,6 @@ Welcome to Manim's documentation! ================================= -test change - .. toctree:: :maxdepth: 2 :caption: Contents: From 2ce766b3bfd4dc2caca16880605c843f7ef4416c Mon Sep 17 00:00:00 2001 From: Devin Neal Date: Tue, 28 May 2019 01:01:48 -0700 Subject: [PATCH 11/12] Update docs badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 94431132..e03476eb 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -[![Documentation Status](https://readthedocs.org/projects/manim/badge/?version=latest)](https://manim.readthedocs.io/en/latest/?badge=latest) [![Build Status](https://travis-ci.org/3b1b/manim.svg?branch=master)](https://travis-ci.org/3b1b/manim) +[![docs EulerTour](https://img.shields.io/badge/docs-EulerTour-blue.svg)](https://www.eulertour.com/learn/manim/) [![MIT License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat)](http://choosealicense.com/licenses/mit/) Manim is an animation engine for explanatory math videos. It's used to create precise animations programmatically, as seen in the videos at [3Blue1Brown](https://www.3blue1brown.com/). From 47a4a1f2dfb470b0eae17f6886ffe9ba30cc7bc0 Mon Sep 17 00:00:00 2001 From: Devin Neal Date: Tue, 28 May 2019 01:39:06 -0700 Subject: [PATCH 12/12] Add social badges README --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e03476eb..158a393c 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,10 @@ [![Build Status](https://travis-ci.org/3b1b/manim.svg?branch=master)](https://travis-ci.org/3b1b/manim) -[![docs EulerTour](https://img.shields.io/badge/docs-EulerTour-blue.svg)](https://www.eulertour.com/learn/manim/) +[![Documentation](https://img.shields.io/badge/docs-EulerTour-blue.svg)](https://www.eulertour.com/learn/manim/) [![MIT License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat)](http://choosealicense.com/licenses/mit/) +[![Manim Subreddit](https://img.shields.io/reddit/subreddit-subscribers/manim.svg?color=ff4301&label=reddit)](https://www.reddit.com/r/manim/) +[![Manim Subreddit](https://img.shields.io/discord/581738731934056449.svg?label=discord)](https://discord.gg/mMRrZQW) Manim is an animation engine for explanatory math videos. It's used to create precise animations programmatically, as seen in the videos at [3Blue1Brown](https://www.3blue1brown.com/).