mirror of
https://github.com/3b1b/manim.git
synced 2025-08-05 08:39:00 +00:00
594 lines
64 KiB
HTML
594 lines
64 KiB
HTML
![]() |
<!doctype html>
|
|||
|
<html class="no-js">
|
|||
|
<head><meta charset="utf-8"/>
|
|||
|
<meta name="viewport" content="width=device-width,initial-scale=1"/><link rel="index" title="Index" href="../genindex.html" /><link rel="search" title="Search" href="../search.html" /><link rel="next" title="CONFIG dictionary" href="config.html" /><link rel="prev" title="CLI flags and configuration" href="configuration.html" />
|
|||
|
|
|||
|
<link rel="shortcut icon" href="../_static/icon.png"/><meta name="generator" content="sphinx-3.4.3, furo 2020.10.05.beta9"/>
|
|||
|
<title>Example Scenes - manim documentation</title>
|
|||
|
<link rel="stylesheet" href="../_static/copybutton.css" />
|
|||
|
<link rel="stylesheet" href="../_static/custom.css" />
|
|||
|
<link rel="stylesheet" href="../_static/colors.css" />
|
|||
|
<link rel="stylesheet" href="../_static/styles/default.css?59e57e02facdc773dadfcc40">
|
|||
|
<link rel="stylesheet" href="../_static/pygments.css?59e57e02facdc773dadfcc40">
|
|||
|
|
|||
|
<style>
|
|||
|
:root {
|
|||
|
--color-code-background: #f8f8f8;
|
|||
|
--color-code-foreground: #000000;
|
|||
|
|
|||
|
}
|
|||
|
</style>
|
|||
|
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script><script src="../_static/jquery.js"></script>
|
|||
|
<script src="../_static/underscore.js"></script>
|
|||
|
|
|||
|
<script src="../_static/doctools.js" defer></script>
|
|||
|
|
|||
|
<script src="../_static/clipboard.min.js"></script>
|
|||
|
<script src="../_static/copybutton.js"></script>
|
|||
|
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script><script src="../_static/scripts/main.js?59e57e02facdc773dadfcc40"></script></head>
|
|||
|
<body dir="">
|
|||
|
|
|||
|
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
|
|||
|
<symbol id="svg-toc" viewBox="0 0 24 24">
|
|||
|
<title>Contents</title>
|
|||
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
|
|||
|
stroke-width="1.5" stroke="#101010" stroke-linecap="round" stroke-linejoin="round">
|
|||
|
<path stroke="none" d="M0 0h24v24H0z"/>
|
|||
|
<line x1="4" y1="6" x2="20" y2="6" />
|
|||
|
<line x1="10" y1="12" x2="20" y2="12" />
|
|||
|
<line x1="6" y1="18" x2="20" y2="18" />
|
|||
|
</svg>
|
|||
|
</symbol>
|
|||
|
<symbol id="svg-menu" viewBox="0 0 24 24">
|
|||
|
<title>Menu</title>
|
|||
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
|
|||
|
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
|
|||
|
class="feather feather-menu">
|
|||
|
<line x1="3" y1="12" x2="21" y2="12"></line>
|
|||
|
<line x1="3" y1="6" x2="21" y2="6"></line>
|
|||
|
<line x1="3" y1="18" x2="21" y2="18"></line>
|
|||
|
</svg>
|
|||
|
</symbol>
|
|||
|
<symbol id="svg-arrow-right" viewBox="0 0 24 24">
|
|||
|
<title>Expand</title>
|
|||
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
|
|||
|
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
|
|||
|
class="feather feather-chevron-right">
|
|||
|
<polyline points="9 18 15 12 9 6"></polyline>
|
|||
|
</svg>
|
|||
|
</symbol>
|
|||
|
</svg>
|
|||
|
|
|||
|
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation">
|
|||
|
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc">
|
|||
|
<label class="overlay sidebar-overlay" for="__navigation"></label>
|
|||
|
<label class="overlay toc-overlay" for="__toc"></label>
|
|||
|
|
|||
|
|
|||
|
<div class="page">
|
|||
|
<header class="mobile-header">
|
|||
|
<label class="header-left nav-overlay-icon" for="__navigation">
|
|||
|
<i class="icon"><svg><use href="#svg-menu"></use></svg></i>
|
|||
|
</label>
|
|||
|
<div class="header-center"><div class="brand">manim documentation</div></div>
|
|||
|
<div class="header-right"></div>
|
|||
|
</header>
|
|||
|
<aside class="sidebar-drawer">
|
|||
|
<div class="sidebar-container">
|
|||
|
|
|||
|
<div class="sidebar-sticky"><a class="sidebar-brand centered" href="../index.html">
|
|||
|
<div class="sidebar-logo-container">
|
|||
|
<img class="sidebar-logo" src="../_static/transparent_graph.png" alt="Logo"/>
|
|||
|
</div>
|
|||
|
|
|||
|
</a><form class="sidebar-search-container" method="get" action="../search.html">
|
|||
|
<input class="sidebar-search" placeholder="Search" name="q">
|
|||
|
<input type="hidden" name="check_keywords" value="yes">
|
|||
|
<input type="hidden" name="area" value="default">
|
|||
|
</form><div class="sidebar-tree sidebar-scroll">
|
|||
|
<p class="caption"><span class="caption-text">Getting Started</span></p>
|
|||
|
<ul class="current">
|
|||
|
<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a></li>
|
|||
|
<li class="toctree-l1"><a class="reference internal" href="quickstart.html">Quick Start</a></li>
|
|||
|
<li class="toctree-l1"><a class="reference internal" href="configuration.html">CLI flags and configuration</a></li>
|
|||
|
<li class="toctree-l1 current current-page"><a class="current reference internal" href="#">Example Scenes</a></li>
|
|||
|
<li class="toctree-l1"><a class="reference internal" href="config.html">CONFIG dictionary</a></li>
|
|||
|
<li class="toctree-l1"><a class="reference internal" href="structure.html">Manim’s structure</a></li>
|
|||
|
</ul>
|
|||
|
<p class="caption"><span class="caption-text">Documentation</span></p>
|
|||
|
<ul>
|
|||
|
<li class="toctree-l1"><a class="reference internal" href="../documentation/constants.html">constants</a></li>
|
|||
|
<li class="toctree-l1"><a class="reference internal" href="../documentation/custom_default.html">custom_default</a></li>
|
|||
|
</ul>
|
|||
|
<p class="caption"><span class="caption-text">Development</span></p>
|
|||
|
<ul>
|
|||
|
<li class="toctree-l1"><a class="reference internal" href="../development/changelog.html">Changelog</a></li>
|
|||
|
<li class="toctree-l1"><a class="reference internal" href="../development/contributing.html">Contributing</a></li>
|
|||
|
<li class="toctree-l1"><a class="reference internal" href="../development/about.html">About</a></li>
|
|||
|
</ul>
|
|||
|
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
|
|||
|
</div>
|
|||
|
</aside>
|
|||
|
<main class="main">
|
|||
|
<div class="content">
|
|||
|
<article role="main">
|
|||
|
<label class="toc-overlay-icon" for="__toc">
|
|||
|
<i class="icon"><svg><use href="#svg-toc"></use></svg></i>
|
|||
|
</label>
|
|||
|
<div class="section" id="example-scenes">
|
|||
|
<h1>Example Scenes<a class="headerlink" href="#example-scenes" title="Permalink to this headline">¶</a></h1>
|
|||
|
<p>After understanding the previous knowledge, we can understand more scenes.
|
|||
|
Many example scenes are given in <code class="docutils literal notranslate"><span class="pre">example_scenes.py</span></code>, let’s start with
|
|||
|
the simplest and one by one.</p>
|
|||
|
<div class="section" id="squaretocircle">
|
|||
|
<h2>SquareToCircle<a class="headerlink" href="#squaretocircle" title="Permalink to this headline">¶</a></h2>
|
|||
|
<div class="manim-example"><video autoplay="" class="manim-video" controls="" id="squaretocircle" loop="" src="../_static/example_scenes/SquareToCircle.mp4"></video><h5 class="example-header">SquareToCircle<a class="headerlink" href="#squaretocircle">¶</a></h5><div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">manimlib.imports</span> <span class="kn">import</span> <span class="o">*</span>
|
|||
|
|
|||
|
<span class="k">class</span> <span class="nc">SquareToCircle</span><span class="p">(</span><span class="n">Scene</span><span class="p">):</span>
|
|||
|
<span class="k">def</span> <span class="nf">construct</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|||
|
<span class="n">circle</span> <span class="o">=</span> <span class="n">Circle</span><span class="p">()</span>
|
|||
|
<span class="n">circle</span><span class="o">.</span><span class="n">set_fill</span><span class="p">(</span><span class="n">BLUE</span><span class="p">,</span> <span class="n">opacity</span><span class="o">=</span><span class="mf">0.5</span><span class="p">)</span>
|
|||
|
<span class="n">circle</span><span class="o">.</span><span class="n">set_stroke</span><span class="p">(</span><span class="n">BLUE_E</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">4</span><span class="p">)</span>
|
|||
|
<span class="n">square</span> <span class="o">=</span> <span class="n">Square</span><span class="p">()</span>
|
|||
|
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span><span class="n">ShowCreation</span><span class="p">(</span><span class="n">square</span><span class="p">))</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span><span class="n">ReplacementTransform</span><span class="p">(</span><span class="n">square</span><span class="p">,</span> <span class="n">circle</span><span class="p">))</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
|
|||
|
</pre></div>
|
|||
|
</div>
|
|||
|
</div><p>This scene is what we wrote in <a class="reference internal" href="quickstart.html"><span class="doc">Quick Start</span></a>.
|
|||
|
No more explanation here</p>
|
|||
|
</div>
|
|||
|
<div class="section" id="warpsquare">
|
|||
|
<h2>WarpSquare<a class="headerlink" href="#warpsquare" title="Permalink to this headline">¶</a></h2>
|
|||
|
<div class="manim-example"><video autoplay="" class="manim-video" controls="" id="warpsquare" loop="" src="../_static/example_scenes/WarpSquare.mp4"></video><h5 class="example-header">WarpSquare<a class="headerlink" href="#warpsquare">¶</a></h5><div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">WarpSquare</span><span class="p">(</span><span class="n">Scene</span><span class="p">):</span>
|
|||
|
<span class="k">def</span> <span class="nf">construct</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|||
|
<span class="n">square</span> <span class="o">=</span> <span class="n">Square</span><span class="p">()</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span><span class="n">square</span><span class="o">.</span><span class="n">apply_complex_function</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">exp</span><span class="p">)</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
|
|||
|
</pre></div>
|
|||
|
</div>
|
|||
|
</div><p>The new usage in this scene is <code class="docutils literal notranslate"><span class="pre">self.play(square.apply_complex_function,</span> <span class="pre">np.exp)</span></code>,
|
|||
|
which shows an animation of applying a complex function <span class="math notranslate nohighlight">\(f(z)=e^z\)</span> to a square.
|
|||
|
It is equivalent to transforming the original square into the result after
|
|||
|
applying a function.</p>
|
|||
|
</div>
|
|||
|
<div class="section" id="textexample">
|
|||
|
<h2>TextExample<a class="headerlink" href="#textexample" title="Permalink to this headline">¶</a></h2>
|
|||
|
<div class="manim-example"><video autoplay="" class="manim-video" controls="" id="textexample" loop="" src="../_static/example_scenes/TextExample.mp4"></video><h5 class="example-header">TextExample<a class="headerlink" href="#textexample">¶</a></h5><div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">TextExample</span><span class="p">(</span><span class="n">Scene</span><span class="p">):</span>
|
|||
|
<span class="k">def</span> <span class="nf">construct</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|||
|
<span class="n">text</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span><span class="s2">"Here is a text"</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="s2">"Consolas"</span><span class="p">,</span> <span class="n">font_size</span><span class="o">=</span><span class="mi">90</span><span class="p">)</span>
|
|||
|
<span class="n">difference</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span>
|
|||
|
<span class="sd">"""</span>
|
|||
|
<span class="sd"> The most important difference between Text and TexText is that\n</span>
|
|||
|
<span class="sd"> you can change the font more easily, but can't use the LaTeX grammar</span>
|
|||
|
<span class="sd"> """</span><span class="p">,</span>
|
|||
|
<span class="n">font</span><span class="o">=</span><span class="s2">"Arial"</span><span class="p">,</span> <span class="n">font_size</span><span class="o">=</span><span class="mi">24</span><span class="p">,</span>
|
|||
|
<span class="n">t2c</span><span class="o">=</span><span class="p">{</span><span class="s2">"Text"</span><span class="p">:</span> <span class="n">BLUE</span><span class="p">,</span> <span class="s2">"TexText"</span><span class="p">:</span> <span class="n">BLUE</span><span class="p">,</span> <span class="s2">"LaTeX"</span><span class="p">:</span> <span class="n">ORANGE</span><span class="p">}</span>
|
|||
|
<span class="p">)</span>
|
|||
|
<span class="n">VGroup</span><span class="p">(</span><span class="n">text</span><span class="p">,</span> <span class="n">difference</span><span class="p">)</span><span class="o">.</span><span class="n">arrange</span><span class="p">(</span><span class="n">DOWN</span><span class="p">,</span> <span class="n">buff</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span><span class="n">Write</span><span class="p">(</span><span class="n">text</span><span class="p">))</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span><span class="n">FadeIn</span><span class="p">(</span><span class="n">difference</span><span class="p">,</span> <span class="n">UP</span><span class="p">))</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">wait</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
|
|||
|
|
|||
|
<span class="n">fonts</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span>
|
|||
|
<span class="s2">"And you can also set the font according to different words"</span><span class="p">,</span>
|
|||
|
<span class="n">font</span><span class="o">=</span><span class="s2">"Arial"</span><span class="p">,</span>
|
|||
|
<span class="n">t2f</span><span class="o">=</span><span class="p">{</span><span class="s2">"font"</span><span class="p">:</span> <span class="s2">"Consolas"</span><span class="p">,</span> <span class="s2">"words"</span><span class="p">:</span> <span class="s2">"Consolas"</span><span class="p">},</span>
|
|||
|
<span class="n">t2c</span><span class="o">=</span><span class="p">{</span><span class="s2">"font"</span><span class="p">:</span> <span class="n">BLUE</span><span class="p">,</span> <span class="s2">"words"</span><span class="p">:</span> <span class="n">GREEN</span><span class="p">}</span>
|
|||
|
<span class="p">)</span>
|
|||
|
<span class="n">slant</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span>
|
|||
|
<span class="s2">"And the same as slant and weight"</span><span class="p">,</span>
|
|||
|
<span class="n">font</span><span class="o">=</span><span class="s2">"Consolas"</span><span class="p">,</span>
|
|||
|
<span class="n">t2s</span><span class="o">=</span><span class="p">{</span><span class="s2">"slant"</span><span class="p">:</span> <span class="n">ITALIC</span><span class="p">},</span>
|
|||
|
<span class="n">t2w</span><span class="o">=</span><span class="p">{</span><span class="s2">"weight"</span><span class="p">:</span> <span class="n">BOLD</span><span class="p">},</span>
|
|||
|
<span class="n">t2c</span><span class="o">=</span><span class="p">{</span><span class="s2">"slant"</span><span class="p">:</span> <span class="n">ORANGE</span><span class="p">,</span> <span class="s2">"weight"</span><span class="p">:</span> <span class="n">RED</span><span class="p">}</span>
|
|||
|
<span class="p">)</span>
|
|||
|
<span class="n">VGroup</span><span class="p">(</span><span class="n">fonts</span><span class="p">,</span> <span class="n">slant</span><span class="p">)</span><span class="o">.</span><span class="n">arrange</span><span class="p">(</span><span class="n">DOWN</span><span class="p">,</span> <span class="n">buff</span><span class="o">=</span><span class="mf">0.8</span><span class="p">)</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span><span class="n">FadeOut</span><span class="p">(</span><span class="n">text</span><span class="p">),</span> <span class="n">FadeOut</span><span class="p">(</span><span class="n">difference</span><span class="p">,</span> <span class="n">shift</span><span class="o">=</span><span class="n">DOWN</span><span class="p">))</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span><span class="n">Write</span><span class="p">(</span><span class="n">fonts</span><span class="p">))</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span><span class="n">Write</span><span class="p">(</span><span class="n">slant</span><span class="p">))</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
|
|||
|
</pre></div>
|
|||
|
</div>
|
|||
|
</div><p>The new classes in this scene are <code class="docutils literal notranslate"><span class="pre">Text</span></code>, <code class="docutils literal notranslate"><span class="pre">VGroup</span></code>, <code class="docutils literal notranslate"><span class="pre">Write</span></code>, <code class="docutils literal notranslate"><span class="pre">FadeIn</span></code> and <code class="docutils literal notranslate"><span class="pre">FadeOut</span></code>.</p>
|
|||
|
<ul class="simple">
|
|||
|
<li><p><code class="docutils literal notranslate"><span class="pre">Text</span></code> can create text, define fonts, etc. The usage ais clearly reflected in the above examples.</p></li>
|
|||
|
<li><p><code class="docutils literal notranslate"><span class="pre">VGroup</span></code> can put multiple <code class="docutils literal notranslate"><span class="pre">VMobject</span></code> together as a whole. In the example, the <code class="docutils literal notranslate"><span class="pre">.arrange()</span></code> method is called to arrange the sub-mobjects in sequence downward (<code class="docutils literal notranslate"><span class="pre">DOWN</span></code>), and the spacing is <code class="docutils literal notranslate"><span class="pre">buff</span></code>.</p></li>
|
|||
|
<li><p><code class="docutils literal notranslate"><span class="pre">Write</span></code> is an animation that shows similar writing effects.</p></li>
|
|||
|
<li><p><code class="docutils literal notranslate"><span class="pre">FadeIn</span></code> fades the object in, the second parameter indicates the direction of the fade in.</p></li>
|
|||
|
<li><p><code class="docutils literal notranslate"><span class="pre">FadeOut</span></code> fades out the object, the second parameter indicates the direction of the fade out.</p></li>
|
|||
|
</ul>
|
|||
|
</div>
|
|||
|
<div class="section" id="textransformexample">
|
|||
|
<h2>TexTransformExample<a class="headerlink" href="#textransformexample" title="Permalink to this headline">¶</a></h2>
|
|||
|
<div class="manim-example"><video autoplay="" class="manim-video" controls="" id="textransformexample" loop="" src="../_static/example_scenes/TexTransformExample.mp4"></video><h5 class="example-header">TexTransformExample<a class="headerlink" href="#textransformexample">¶</a></h5><div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">TexTransformExample</span><span class="p">(</span><span class="n">Scene</span><span class="p">):</span>
|
|||
|
<span class="k">def</span> <span class="nf">construct</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|||
|
<span class="n">kw</span> <span class="o">=</span> <span class="p">{</span>
|
|||
|
<span class="s2">"isolate"</span><span class="p">:</span> <span class="p">[</span><span class="s2">"B"</span><span class="p">,</span> <span class="s2">"C"</span><span class="p">,</span> <span class="s2">"="</span><span class="p">,</span> <span class="s2">"("</span><span class="p">,</span> <span class="s2">")"</span><span class="p">]</span>
|
|||
|
<span class="p">}</span>
|
|||
|
<span class="n">lines</span> <span class="o">=</span> <span class="n">VGroup</span><span class="p">(</span>
|
|||
|
<span class="n">Tex</span><span class="p">(</span><span class="s2">"{{A^2}} + {{B^2}} = {{C^2}}"</span><span class="p">),</span>
|
|||
|
<span class="n">Tex</span><span class="p">(</span><span class="s2">"{{A^2}} = {{C^2}} - {{B^2}}"</span><span class="p">),</span>
|
|||
|
<span class="n">Tex</span><span class="p">(</span><span class="s2">"{{A^2}} = (C + B)(C - B)"</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">),</span>
|
|||
|
<span class="n">Tex</span><span class="p">(</span><span class="s2">"A = </span><span class="se">\\</span><span class="s2">sqrt{(C + B)(C - B)}"</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">)</span>
|
|||
|
<span class="p">)</span>
|
|||
|
<span class="n">lines</span><span class="o">.</span><span class="n">arrange</span><span class="p">(</span><span class="n">DOWN</span><span class="p">,</span> <span class="n">buff</span><span class="o">=</span><span class="n">LARGE_BUFF</span><span class="p">)</span>
|
|||
|
<span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">lines</span><span class="p">:</span>
|
|||
|
<span class="n">line</span><span class="o">.</span><span class="n">set_color_by_tex_to_color_map</span><span class="p">({</span>
|
|||
|
<span class="s2">"A"</span><span class="p">:</span> <span class="n">BLUE</span><span class="p">,</span>
|
|||
|
<span class="s2">"B"</span><span class="p">:</span> <span class="n">TEAL</span><span class="p">,</span>
|
|||
|
<span class="s2">"C"</span><span class="p">:</span> <span class="n">GREEN</span><span class="p">,</span>
|
|||
|
<span class="p">})</span>
|
|||
|
|
|||
|
<span class="n">play_kw</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"run_time"</span><span class="p">:</span> <span class="mi">2</span><span class="p">}</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">lines</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span>
|
|||
|
<span class="n">TransformMatchingTex</span><span class="p">(</span>
|
|||
|
<span class="n">lines</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">lines</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span>
|
|||
|
<span class="n">path_arc</span><span class="o">=</span><span class="mi">90</span> <span class="o">*</span> <span class="n">DEGREES</span><span class="p">,</span>
|
|||
|
<span class="p">),</span>
|
|||
|
<span class="o">**</span><span class="n">play_kw</span>
|
|||
|
<span class="p">)</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
|
|||
|
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span>
|
|||
|
<span class="n">TransformMatchingTex</span><span class="p">(</span><span class="n">lines</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">lines</span><span class="p">[</span><span class="mi">2</span><span class="p">]),</span>
|
|||
|
<span class="o">**</span><span class="n">play_kw</span>
|
|||
|
<span class="p">)</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span><span class="n">FadeOut</span><span class="p">(</span><span class="n">lines</span><span class="p">[</span><span class="mi">2</span><span class="p">]))</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span>
|
|||
|
<span class="n">TransformMatchingTex</span><span class="p">(</span>
|
|||
|
<span class="n">lines</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">lines</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span>
|
|||
|
<span class="n">key_map</span><span class="o">=</span><span class="p">{</span>
|
|||
|
<span class="s2">"C^2"</span><span class="p">:</span> <span class="s2">"C"</span><span class="p">,</span>
|
|||
|
<span class="s2">"B^2"</span><span class="p">:</span> <span class="s2">"B"</span><span class="p">,</span>
|
|||
|
<span class="p">}</span>
|
|||
|
<span class="p">),</span>
|
|||
|
<span class="o">**</span><span class="n">play_kw</span>
|
|||
|
<span class="p">)</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
|
|||
|
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span>
|
|||
|
<span class="n">TransformMatchingTex</span><span class="p">(</span>
|
|||
|
<span class="n">lines</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">lines</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span>
|
|||
|
<span class="n">fade_transform_mismatches</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
|
|||
|
<span class="p">),</span>
|
|||
|
<span class="o">**</span><span class="n">play_kw</span>
|
|||
|
<span class="p">)</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">wait</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span><span class="n">FadeOut</span><span class="p">(</span><span class="n">lines</span><span class="p">,</span> <span class="n">RIGHT</span><span class="p">))</span>
|
|||
|
|
|||
|
<span class="n">source</span> <span class="o">=</span> <span class="n">TexText</span><span class="p">(</span><span class="s2">"the morse code"</span><span class="p">)</span>
|
|||
|
<span class="n">target</span> <span class="o">=</span> <span class="n">TexText</span><span class="p">(</span><span class="s2">"here come dots"</span><span class="p">)</span>
|
|||
|
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span><span class="n">Write</span><span class="p">(</span><span class="n">source</span><span class="p">))</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
|
|||
|
<span class="n">kw</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"run_time"</span><span class="p">:</span> <span class="mi">3</span><span class="p">,</span> <span class="s2">"path_arc"</span><span class="p">:</span> <span class="n">PI</span> <span class="o">/</span> <span class="mi">2</span><span class="p">}</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span><span class="n">TransformMatchingShapes</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">target</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">))</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span><span class="n">TransformMatchingShapes</span><span class="p">(</span><span class="n">target</span><span class="p">,</span> <span class="n">source</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">))</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
|
|||
|
</pre></div>
|
|||
|
</div>
|
|||
|
</div><p>The new classes in this scene are <code class="docutils literal notranslate"><span class="pre">Tex</span></code>, <code class="docutils literal notranslate"><span class="pre">TexText</span></code>, <code class="docutils literal notranslate"><span class="pre">TransformMatchingTex</span></code>
|
|||
|
and <code class="docutils literal notranslate"><span class="pre">TransformMatchingShapes</span></code>.</p>
|
|||
|
<ul class="simple">
|
|||
|
<li><p><code class="docutils literal notranslate"><span class="pre">Tex</span></code> uses LaTeX to create mathematical formulas.</p></li>
|
|||
|
<li><p><code class="docutils literal notranslate"><span class="pre">TexText</span></code> uses LaTeX to create text.</p></li>
|
|||
|
<li><p><code class="docutils literal notranslate"><span class="pre">TransformMatchingTeX</span></code> automatically transforms sub-objects according to the similarities and differences of tex in <code class="docutils literal notranslate"><span class="pre">Tex</span></code>.</p></li>
|
|||
|
<li><p><code class="docutils literal notranslate"><span class="pre">TransformMatchingShapes</span></code> automatically transform sub-objects directly based on the similarities and differences of the object point sets.</p></li>
|
|||
|
</ul>
|
|||
|
</div>
|
|||
|
<div class="section" id="updatersexample">
|
|||
|
<h2>UpdatersExample<a class="headerlink" href="#updatersexample" title="Permalink to this headline">¶</a></h2>
|
|||
|
<div class="manim-example"><video autoplay="" class="manim-video" controls="" id="updatersexample" loop="" src="../_static/example_scenes/UpdatersExample.mp4"></video><h5 class="example-header">UpdatersExample<a class="headerlink" href="#updatersexample">¶</a></h5><div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">UpdatersExample</span><span class="p">(</span><span class="n">Scene</span><span class="p">):</span>
|
|||
|
<span class="k">def</span> <span class="nf">construct</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|||
|
<span class="n">decimal</span> <span class="o">=</span> <span class="n">DecimalNumber</span><span class="p">(</span>
|
|||
|
<span class="mi">0</span><span class="p">,</span>
|
|||
|
<span class="n">show_ellipsis</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
|
|||
|
<span class="n">num_decimal_places</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span>
|
|||
|
<span class="n">include_sign</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
|
|||
|
<span class="p">)</span>
|
|||
|
<span class="n">square</span> <span class="o">=</span> <span class="n">Square</span><span class="p">()</span>
|
|||
|
<span class="n">square</span><span class="o">.</span><span class="n">to_edge</span><span class="p">(</span><span class="n">UP</span><span class="p">)</span>
|
|||
|
|
|||
|
<span class="n">always</span><span class="p">(</span><span class="n">decimal</span><span class="o">.</span><span class="n">next_to</span><span class="p">,</span> <span class="n">square</span><span class="p">)</span>
|
|||
|
<span class="n">f_always</span><span class="p">(</span><span class="n">decimal</span><span class="o">.</span><span class="n">set_value</span><span class="p">,</span> <span class="n">square</span><span class="o">.</span><span class="n">get_y</span><span class="p">)</span>
|
|||
|
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">square</span><span class="p">,</span> <span class="n">decimal</span><span class="p">)</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span>
|
|||
|
<span class="n">square</span><span class="o">.</span><span class="n">to_edge</span><span class="p">,</span> <span class="n">DOWN</span><span class="p">,</span>
|
|||
|
<span class="n">run_time</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span>
|
|||
|
<span class="p">)</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span><span class="n">square</span><span class="o">.</span><span class="n">center</span><span class="p">)</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
|
|||
|
|
|||
|
<span class="n">now</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">time</span>
|
|||
|
<span class="n">square</span><span class="o">.</span><span class="n">add_updater</span><span class="p">(</span>
|
|||
|
<span class="k">lambda</span> <span class="n">m</span><span class="p">:</span> <span class="n">m</span><span class="o">.</span><span class="n">set_y</span><span class="p">(</span><span class="n">math</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">time</span> <span class="o">-</span> <span class="n">now</span><span class="p">))</span>
|
|||
|
<span class="p">)</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">wait</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
|
|||
|
</pre></div>
|
|||
|
</div>
|
|||
|
</div><p>The new classes and usage in this scene are <code class="docutils literal notranslate"><span class="pre">DecimalNumber</span></code>, <code class="docutils literal notranslate"><span class="pre">.to_edge()</span></code>,
|
|||
|
<code class="docutils literal notranslate"><span class="pre">.center()</span></code>, <code class="docutils literal notranslate"><span class="pre">always()</span></code>, <code class="docutils literal notranslate"><span class="pre">f_always()</span></code>, <code class="docutils literal notranslate"><span class="pre">.set_y()</span></code> and <code class="docutils literal notranslate"><span class="pre">.add_updater()</span></code>.</p>
|
|||
|
<ul class="simple">
|
|||
|
<li><p><code class="docutils literal notranslate"><span class="pre">DecimalNumber</span></code> is a variable number, speed it up by breaking it into <code class="docutils literal notranslate"><span class="pre">Tex</span></code> characters.</p></li>
|
|||
|
<li><p><code class="docutils literal notranslate"><span class="pre">.to_edge()</span></code> means to place the object on the edge of the screen.</p></li>
|
|||
|
<li><p><code class="docutils literal notranslate"><span class="pre">.center()</span></code> means to place the object in the center of the screen.</p></li>
|
|||
|
<li><p><code class="docutils literal notranslate"><span class="pre">always(f,</span> <span class="pre">x)</span></code> means that a certain function (<code class="docutils literal notranslate"><span class="pre">f(x)</span></code>) is executed every frame.</p></li>
|
|||
|
<li><p><code class="docutils literal notranslate"><span class="pre">f_always(f,</span> <span class="pre">g)</span></code> is similar to <code class="docutils literal notranslate"><span class="pre">always</span></code>, executed <code class="docutils literal notranslate"><span class="pre">f(g())</span></code> every frame.</p></li>
|
|||
|
<li><p><code class="docutils literal notranslate"><span class="pre">.set_y()</span></code> means to set the ordinate of the object on the screen.</p></li>
|
|||
|
<li><p><code class="docutils literal notranslate"><span class="pre">.add_updater()</span></code> sets an update function for the object. For example: <code class="docutils literal notranslate"><span class="pre">mob1.add_updater(lambda</span> <span class="pre">mob:</span> <span class="pre">mob.next_to(mob2))</span></code> means <code class="docutils literal notranslate"><span class="pre">mob1.next_to(mob2)</span></code> is executed every frame.</p></li>
|
|||
|
</ul>
|
|||
|
</div>
|
|||
|
<div class="section" id="surfaceexample">
|
|||
|
<h2>SurfaceExample<a class="headerlink" href="#surfaceexample" title="Permalink to this headline">¶</a></h2>
|
|||
|
<div class="manim-example"><video autoplay="" class="manim-video" controls="" id="surfaceexample" loop="" src="../_static/example_scenes/SurfaceExample.mp4"></video><h5 class="example-header">SurfaceExample<a class="headerlink" href="#surfaceexample">¶</a></h5><div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">SurfaceExample</span><span class="p">(</span><span class="n">Scene</span><span class="p">):</span>
|
|||
|
<span class="n">CONFIG</span> <span class="o">=</span> <span class="p">{</span>
|
|||
|
<span class="s2">"camera_class"</span><span class="p">:</span> <span class="n">ThreeDCamera</span><span class="p">,</span>
|
|||
|
<span class="p">}</span>
|
|||
|
|
|||
|
<span class="k">def</span> <span class="nf">construct</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|||
|
<span class="n">surface_text</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span><span class="s2">"For 3d scenes, try using surfaces"</span><span class="p">)</span>
|
|||
|
<span class="n">surface_text</span><span class="o">.</span><span class="n">fix_in_frame</span><span class="p">()</span>
|
|||
|
<span class="n">surface_text</span><span class="o">.</span><span class="n">to_edge</span><span class="p">(</span><span class="n">UP</span><span class="p">)</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">surface_text</span><span class="p">)</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">wait</span><span class="p">(</span><span class="mf">0.1</span><span class="p">)</span>
|
|||
|
|
|||
|
<span class="n">torus1</span> <span class="o">=</span> <span class="n">Torus</span><span class="p">(</span><span class="n">r1</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">r2</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
|
|||
|
<span class="n">torus2</span> <span class="o">=</span> <span class="n">Torus</span><span class="p">(</span><span class="n">r1</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">r2</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
|
|||
|
<span class="n">sphere</span> <span class="o">=</span> <span class="n">Sphere</span><span class="p">(</span><span class="n">radius</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">resolution</span><span class="o">=</span><span class="n">torus1</span><span class="o">.</span><span class="n">resolution</span><span class="p">)</span>
|
|||
|
<span class="c1"># You can texture a surface with up to two images, which will</span>
|
|||
|
<span class="c1"># be interpreted as the side towards the light, and away from</span>
|
|||
|
<span class="c1"># the light. These can be either urls, or paths to a local file</span>
|
|||
|
<span class="c1"># in whatever you've set as the image directory in</span>
|
|||
|
<span class="c1"># the custom_defaults.yml file</span>
|
|||
|
|
|||
|
<span class="c1"># day_texture = "EarthTextureMap"</span>
|
|||
|
<span class="c1"># night_texture = "NightEarthTextureMap"</span>
|
|||
|
<span class="n">day_texture</span> <span class="o">=</span> <span class="s2">"https://upload.wikimedia.org/wikipedia/commons/thumb/4/4d/Whole_world_-_land_and_oceans.jpg/1280px-Whole_world_-_land_and_oceans.jpg"</span>
|
|||
|
<span class="n">night_texture</span> <span class="o">=</span> <span class="s2">"https://upload.wikimedia.org/wikipedia/commons/thumb/b/ba/The_earth_at_night.jpg/1280px-The_earth_at_night.jpg"</span>
|
|||
|
|
|||
|
<span class="n">surfaces</span> <span class="o">=</span> <span class="p">[</span>
|
|||
|
<span class="n">TexturedSurface</span><span class="p">(</span><span class="n">surface</span><span class="p">,</span> <span class="n">day_texture</span><span class="p">,</span> <span class="n">night_texture</span><span class="p">)</span>
|
|||
|
<span class="k">for</span> <span class="n">surface</span> <span class="ow">in</span> <span class="p">[</span><span class="n">sphere</span><span class="p">,</span> <span class="n">torus1</span><span class="p">,</span> <span class="n">torus2</span><span class="p">]</span>
|
|||
|
<span class="p">]</span>
|
|||
|
|
|||
|
<span class="k">for</span> <span class="n">mob</span> <span class="ow">in</span> <span class="n">surfaces</span><span class="p">:</span>
|
|||
|
<span class="n">mob</span><span class="o">.</span><span class="n">shift</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span>
|
|||
|
<span class="n">mob</span><span class="o">.</span><span class="n">mesh</span> <span class="o">=</span> <span class="n">SurfaceMesh</span><span class="p">(</span><span class="n">mob</span><span class="p">)</span>
|
|||
|
<span class="n">mob</span><span class="o">.</span><span class="n">mesh</span><span class="o">.</span><span class="n">set_stroke</span><span class="p">(</span><span class="n">BLUE</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">opacity</span><span class="o">=</span><span class="mf">0.5</span><span class="p">)</span>
|
|||
|
|
|||
|
<span class="c1"># Set perspective</span>
|
|||
|
<span class="n">frame</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">camera</span><span class="o">.</span><span class="n">frame</span>
|
|||
|
<span class="n">frame</span><span class="o">.</span><span class="n">set_euler_angles</span><span class="p">(</span>
|
|||
|
<span class="n">theta</span><span class="o">=-</span><span class="mi">30</span> <span class="o">*</span> <span class="n">DEGREES</span><span class="p">,</span>
|
|||
|
<span class="n">phi</span><span class="o">=</span><span class="mi">70</span> <span class="o">*</span> <span class="n">DEGREES</span><span class="p">,</span>
|
|||
|
<span class="p">)</span>
|
|||
|
|
|||
|
<span class="n">surface</span> <span class="o">=</span> <span class="n">surfaces</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
|||
|
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span>
|
|||
|
<span class="n">FadeIn</span><span class="p">(</span><span class="n">surface</span><span class="p">),</span>
|
|||
|
<span class="n">ShowCreation</span><span class="p">(</span><span class="n">surface</span><span class="o">.</span><span class="n">mesh</span><span class="p">,</span> <span class="n">lag_ratio</span><span class="o">=</span><span class="mf">0.01</span><span class="p">,</span> <span class="n">run_time</span><span class="o">=</span><span class="mi">3</span><span class="p">),</span>
|
|||
|
<span class="p">)</span>
|
|||
|
<span class="k">for</span> <span class="n">mob</span> <span class="ow">in</span> <span class="n">surfaces</span><span class="p">:</span>
|
|||
|
<span class="n">mob</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">mob</span><span class="o">.</span><span class="n">mesh</span><span class="p">)</span>
|
|||
|
<span class="n">surface</span><span class="o">.</span><span class="n">save_state</span><span class="p">()</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span><span class="n">Rotate</span><span class="p">(</span><span class="n">surface</span><span class="p">,</span> <span class="n">PI</span> <span class="o">/</span> <span class="mi">2</span><span class="p">),</span> <span class="n">run_time</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
|
|||
|
<span class="k">for</span> <span class="n">mob</span> <span class="ow">in</span> <span class="n">surfaces</span><span class="p">[</span><span class="mi">1</span><span class="p">:]:</span>
|
|||
|
<span class="n">mob</span><span class="o">.</span><span class="n">rotate</span><span class="p">(</span><span class="n">PI</span> <span class="o">/</span> <span class="mi">2</span><span class="p">)</span>
|
|||
|
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span>
|
|||
|
<span class="n">Transform</span><span class="p">(</span><span class="n">surface</span><span class="p">,</span> <span class="n">surfaces</span><span class="p">[</span><span class="mi">1</span><span class="p">]),</span>
|
|||
|
<span class="n">run_time</span><span class="o">=</span><span class="mi">3</span>
|
|||
|
<span class="p">)</span>
|
|||
|
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span>
|
|||
|
<span class="n">Transform</span><span class="p">(</span><span class="n">surface</span><span class="p">,</span> <span class="n">surfaces</span><span class="p">[</span><span class="mi">2</span><span class="p">]),</span>
|
|||
|
<span class="c1"># Move camera frame during the transition</span>
|
|||
|
<span class="n">frame</span><span class="o">.</span><span class="n">increment_phi</span><span class="p">,</span> <span class="o">-</span><span class="mi">10</span> <span class="o">*</span> <span class="n">DEGREES</span><span class="p">,</span>
|
|||
|
<span class="n">frame</span><span class="o">.</span><span class="n">increment_theta</span><span class="p">,</span> <span class="o">-</span><span class="mi">20</span> <span class="o">*</span> <span class="n">DEGREES</span><span class="p">,</span>
|
|||
|
<span class="n">run_time</span><span class="o">=</span><span class="mi">3</span>
|
|||
|
<span class="p">)</span>
|
|||
|
<span class="c1"># Add ambient rotation</span>
|
|||
|
<span class="n">frame</span><span class="o">.</span><span class="n">add_updater</span><span class="p">(</span><span class="k">lambda</span> <span class="n">m</span><span class="p">,</span> <span class="n">dt</span><span class="p">:</span> <span class="n">m</span><span class="o">.</span><span class="n">increment_theta</span><span class="p">(</span><span class="o">-</span><span class="mf">0.1</span> <span class="o">*</span> <span class="n">dt</span><span class="p">))</span>
|
|||
|
|
|||
|
<span class="c1"># Play around with where the light is</span>
|
|||
|
<span class="n">light_text</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span><span class="s2">"You can move around the light source"</span><span class="p">)</span>
|
|||
|
<span class="n">light_text</span><span class="o">.</span><span class="n">move_to</span><span class="p">(</span><span class="n">surface_text</span><span class="p">)</span>
|
|||
|
<span class="n">light_text</span><span class="o">.</span><span class="n">fix_in_frame</span><span class="p">()</span>
|
|||
|
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span><span class="n">FadeTransform</span><span class="p">(</span><span class="n">surface_text</span><span class="p">,</span> <span class="n">light_text</span><span class="p">))</span>
|
|||
|
<span class="n">light</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">camera</span><span class="o">.</span><span class="n">light_source</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">light</span><span class="p">)</span>
|
|||
|
<span class="n">light</span><span class="o">.</span><span class="n">save_state</span><span class="p">()</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span><span class="n">light</span><span class="o">.</span><span class="n">move_to</span><span class="p">,</span> <span class="mi">3</span> <span class="o">*</span> <span class="n">IN</span><span class="p">,</span> <span class="n">run_time</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span><span class="n">light</span><span class="o">.</span><span class="n">shift</span><span class="p">,</span> <span class="mi">10</span> <span class="o">*</span> <span class="n">OUT</span><span class="p">,</span> <span class="n">run_time</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>
|
|||
|
|
|||
|
<span class="n">drag_text</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span><span class="s2">"Try moving the mouse while pressing d or s"</span><span class="p">)</span>
|
|||
|
<span class="n">drag_text</span><span class="o">.</span><span class="n">move_to</span><span class="p">(</span><span class="n">light_text</span><span class="p">)</span>
|
|||
|
<span class="n">drag_text</span><span class="o">.</span><span class="n">fix_in_frame</span><span class="p">()</span>
|
|||
|
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span><span class="n">FadeTransform</span><span class="p">(</span><span class="n">light_text</span><span class="p">,</span> <span class="n">drag_text</span><span class="p">))</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
|
|||
|
</pre></div>
|
|||
|
</div>
|
|||
|
</div><p>This scene shows an example of using a three-dimensional surface, and
|
|||
|
the related usage has been briefly described in the notes.</p>
|
|||
|
<ul class="simple">
|
|||
|
<li><p><code class="docutils literal notranslate"><span class="pre">.fix_in_frame()</span></code> makes the object not change with the view angle of the screen, and is always displayed at a fixed position on the screen.</p></li>
|
|||
|
</ul>
|
|||
|
</div>
|
|||
|
<div class="section" id="openingmanimexample">
|
|||
|
<h2>OpeningManimExample<a class="headerlink" href="#openingmanimexample" title="Permalink to this headline">¶</a></h2>
|
|||
|
<div class="manim-example"><video autoplay="" class="manim-video" controls="" id="openingmanimexample" loop="" src="../_static/example_scenes/OpeningManimExample.mp4"></video><h5 class="example-header">OpeningManimExample<a class="headerlink" href="#openingmanimexample">¶</a></h5><div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">OpeningManimExample</span><span class="p">(</span><span class="n">Scene</span><span class="p">):</span>
|
|||
|
<span class="k">def</span> <span class="nf">construct</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|||
|
<span class="n">title</span> <span class="o">=</span> <span class="n">TexText</span><span class="p">(</span><span class="s2">"This is some </span><span class="se">\\</span><span class="s2">LaTeX"</span><span class="p">)</span>
|
|||
|
<span class="n">basel</span> <span class="o">=</span> <span class="n">Tex</span><span class="p">(</span>
|
|||
|
<span class="s2">"</span><span class="se">\\</span><span class="s2">sum_{n=1}^</span><span class="se">\\</span><span class="s2">infty "</span>
|
|||
|
<span class="s2">"</span><span class="se">\\</span><span class="s2">frac{1}{n^2} = </span><span class="se">\\</span><span class="s2">frac{</span><span class="se">\\</span><span class="s2">pi^2}{6}"</span>
|
|||
|
<span class="p">)</span>
|
|||
|
<span class="n">VGroup</span><span class="p">(</span><span class="n">title</span><span class="p">,</span> <span class="n">basel</span><span class="p">)</span><span class="o">.</span><span class="n">arrange</span><span class="p">(</span><span class="n">DOWN</span><span class="p">)</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span>
|
|||
|
<span class="n">Write</span><span class="p">(</span><span class="n">title</span><span class="p">),</span>
|
|||
|
<span class="n">FadeIn</span><span class="p">(</span><span class="n">basel</span><span class="p">,</span> <span class="n">UP</span><span class="p">),</span>
|
|||
|
<span class="p">)</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
|
|||
|
|
|||
|
<span class="n">transform_title</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span><span class="s2">"That was a transform"</span><span class="p">)</span>
|
|||
|
<span class="n">transform_title</span><span class="o">.</span><span class="n">to_corner</span><span class="p">(</span><span class="n">UL</span><span class="p">)</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span>
|
|||
|
<span class="n">Transform</span><span class="p">(</span><span class="n">title</span><span class="p">,</span> <span class="n">transform_title</span><span class="p">),</span>
|
|||
|
<span class="n">LaggedStartMap</span><span class="p">(</span><span class="n">FadeOut</span><span class="p">,</span> <span class="n">basel</span><span class="p">,</span> <span class="n">shift</span><span class="o">=</span><span class="n">DOWN</span><span class="p">),</span>
|
|||
|
<span class="p">)</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
|
|||
|
|
|||
|
<span class="n">fade_comment</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span>
|
|||
|
<span class="sd">"""</span>
|
|||
|
<span class="sd"> You probably don't want to overuse</span>
|
|||
|
<span class="sd"> Transforms, though, a simple fade often</span>
|
|||
|
<span class="sd"> looks nicer.</span>
|
|||
|
<span class="sd"> """</span><span class="p">,</span>
|
|||
|
<span class="n">font_size</span><span class="o">=</span><span class="mi">36</span><span class="p">,</span>
|
|||
|
<span class="n">color</span><span class="o">=</span><span class="n">GREY_B</span><span class="p">,</span>
|
|||
|
<span class="p">)</span>
|
|||
|
<span class="n">fade_comment</span><span class="o">.</span><span class="n">next_to</span><span class="p">(</span>
|
|||
|
<span class="n">transform_title</span><span class="p">,</span> <span class="n">DOWN</span><span class="p">,</span>
|
|||
|
<span class="n">buff</span><span class="o">=</span><span class="n">LARGE_BUFF</span><span class="p">,</span>
|
|||
|
<span class="n">aligned_edge</span><span class="o">=</span><span class="n">LEFT</span>
|
|||
|
<span class="p">)</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span><span class="n">FadeIn</span><span class="p">(</span><span class="n">fade_comment</span><span class="p">,</span> <span class="n">shift</span><span class="o">=</span><span class="n">DOWN</span><span class="p">))</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">wait</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
|
|||
|
|
|||
|
<span class="n">grid</span> <span class="o">=</span> <span class="n">NumberPlane</span><span class="p">((</span><span class="o">-</span><span class="mi">10</span><span class="p">,</span> <span class="mi">10</span><span class="p">),</span> <span class="p">(</span><span class="o">-</span><span class="mi">5</span><span class="p">,</span> <span class="mi">5</span><span class="p">))</span>
|
|||
|
<span class="n">grid_title</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span>
|
|||
|
<span class="s2">"But manim is for illustrating math, not text"</span><span class="p">,</span>
|
|||
|
<span class="p">)</span>
|
|||
|
<span class="n">grid_title</span><span class="o">.</span><span class="n">to_edge</span><span class="p">(</span><span class="n">UP</span><span class="p">)</span>
|
|||
|
<span class="n">grid_title</span><span class="o">.</span><span class="n">add_background_rectangle</span><span class="p">()</span>
|
|||
|
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">grid</span><span class="p">,</span> <span class="n">grid_title</span><span class="p">)</span> <span class="c1"># Make sure title is on top of grid</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span>
|
|||
|
<span class="n">FadeOut</span><span class="p">(</span><span class="n">title</span><span class="p">,</span> <span class="n">shift</span><span class="o">=</span><span class="n">LEFT</span><span class="p">),</span>
|
|||
|
<span class="n">FadeOut</span><span class="p">(</span><span class="n">fade_comment</span><span class="p">,</span> <span class="n">shift</span><span class="o">=</span><span class="n">LEFT</span><span class="p">),</span>
|
|||
|
<span class="n">FadeIn</span><span class="p">(</span><span class="n">grid_title</span><span class="p">),</span>
|
|||
|
<span class="n">ShowCreation</span><span class="p">(</span><span class="n">grid</span><span class="p">,</span> <span class="n">run_time</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">lag_ratio</span><span class="o">=</span><span class="mf">0.1</span><span class="p">),</span>
|
|||
|
<span class="p">)</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
|
|||
|
|
|||
|
<span class="n">matrix</span> <span class="o">=</span> <span class="p">[[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">]]</span>
|
|||
|
<span class="n">linear_transform_title</span> <span class="o">=</span> <span class="n">VGroup</span><span class="p">(</span>
|
|||
|
<span class="n">Text</span><span class="p">(</span><span class="s2">"This is what the matrix"</span><span class="p">),</span>
|
|||
|
<span class="n">IntegerMatrix</span><span class="p">(</span><span class="n">matrix</span><span class="p">,</span> <span class="n">include_background_rectangle</span><span class="o">=</span><span class="bp">True</span><span class="p">),</span>
|
|||
|
<span class="n">Text</span><span class="p">(</span><span class="s2">"looks like"</span><span class="p">)</span>
|
|||
|
<span class="p">)</span>
|
|||
|
<span class="n">linear_transform_title</span><span class="o">.</span><span class="n">arrange</span><span class="p">(</span><span class="n">RIGHT</span><span class="p">)</span>
|
|||
|
<span class="n">linear_transform_title</span><span class="o">.</span><span class="n">to_edge</span><span class="p">(</span><span class="n">UP</span><span class="p">)</span>
|
|||
|
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span>
|
|||
|
<span class="n">FadeOut</span><span class="p">(</span><span class="n">grid_title</span><span class="p">),</span>
|
|||
|
<span class="n">FadeIn</span><span class="p">(</span><span class="n">linear_transform_title</span><span class="p">),</span>
|
|||
|
<span class="p">)</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span><span class="n">grid</span><span class="o">.</span><span class="n">apply_matrix</span><span class="p">,</span> <span class="n">matrix</span><span class="p">,</span> <span class="n">run_time</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
|
|||
|
|
|||
|
<span class="n">grid_transform_title</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span>
|
|||
|
<span class="s2">"And this is a nonlinear transformation"</span>
|
|||
|
<span class="p">)</span>
|
|||
|
<span class="n">grid_transform_title</span><span class="o">.</span><span class="n">set_stroke</span><span class="p">(</span><span class="n">BLACK</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="n">background</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
|||
|
<span class="n">grid_transform_title</span><span class="o">.</span><span class="n">to_edge</span><span class="p">(</span><span class="n">UP</span><span class="p">)</span>
|
|||
|
<span class="n">grid</span><span class="o">.</span><span class="n">prepare_for_nonlinear_transform</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">play</span><span class="p">(</span>
|
|||
|
<span class="n">ApplyPointwiseFunction</span><span class="p">(</span>
|
|||
|
<span class="k">lambda</span> <span class="n">p</span><span class="p">:</span> <span class="n">p</span> <span class="o">+</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]),</span> <span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="mi">0</span><span class="p">]),</span>
|
|||
|
<span class="n">grid</span><span class="p">,</span>
|
|||
|
<span class="n">run_time</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span>
|
|||
|
<span class="p">),</span>
|
|||
|
<span class="n">FadeOut</span><span class="p">(</span><span class="n">linear_transform_title</span><span class="p">),</span>
|
|||
|
<span class="n">FadeIn</span><span class="p">(</span><span class="n">grid_transform_title</span><span class="p">),</span>
|
|||
|
<span class="p">)</span>
|
|||
|
<span class="bp">self</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
|
|||
|
</pre></div>
|
|||
|
</div>
|
|||
|
</div><p>This scene is a comprehensive application of a two-dimensional scene.</p>
|
|||
|
<p>After seeing these scenes, you have already understood part of the
|
|||
|
usage of manim. For more examples, see <a class="reference external" href="https://github.com/3b1b/videos">the video code of 3b1b</a>.</p>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
|
|||
|
</article>
|
|||
|
<footer>
|
|||
|
|
|||
|
<div class="related-pages">
|
|||
|
<a class="next-page" href="config.html">
|
|||
|
<div class="page-info">
|
|||
|
<div class="context">
|
|||
|
<span>Next</span>
|
|||
|
</div>
|
|||
|
<div class="title">CONFIG dictionary</div>
|
|||
|
</div>
|
|||
|
<svg><use href="#svg-arrow-right"></use></svg>
|
|||
|
</a>
|
|||
|
<a class="prev-page" href="configuration.html">
|
|||
|
<svg><use href="#svg-arrow-right"></use></svg>
|
|||
|
<div class="page-info">
|
|||
|
<div class="context">
|
|||
|
<span>Previous</span>
|
|||
|
</div>
|
|||
|
|
|||
|
<div class="title">CLI flags and configuration</div>
|
|||
|
|
|||
|
</div>
|
|||
|
</a>
|
|||
|
</div>
|
|||
|
|
|||
|
<div class="related-information">
|
|||
|
<span class="copyright">Copyright © - This document has been placed in the public domain.</span> |
|
|||
|
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using
|
|||
|
<a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
|
|||
|
<a href="https://github.com/pradyunsg/furo">Furo theme</a>.
|
|||
|
</div>
|
|||
|
|
|||
|
</footer>
|
|||
|
</div>
|
|||
|
<aside class="toc-drawer">
|
|||
|
|
|||
|
|
|||
|
<div class="toc-sticky toc-scroll">
|
|||
|
<div class="toc-title-container">
|
|||
|
<span class="toc-title">
|
|||
|
Contents
|
|||
|
</span>
|
|||
|
</div>
|
|||
|
<div class="toc-tree">
|
|||
|
<ul>
|
|||
|
<li><a class="reference internal" href="#">Example Scenes</a><ul>
|
|||
|
<li><a class="reference internal" href="#squaretocircle">SquareToCircle</a></li>
|
|||
|
<li><a class="reference internal" href="#warpsquare">WarpSquare</a></li>
|
|||
|
<li><a class="reference internal" href="#textexample">TextExample</a></li>
|
|||
|
<li><a class="reference internal" href="#textransformexample">TexTransformExample</a></li>
|
|||
|
<li><a class="reference internal" href="#updatersexample">UpdatersExample</a></li>
|
|||
|
<li><a class="reference internal" href="#surfaceexample">SurfaceExample</a></li>
|
|||
|
<li><a class="reference internal" href="#openingmanimexample">OpeningManimExample</a></li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
|
|||
|
|
|||
|
</aside>
|
|||
|
</main>
|
|||
|
</div>
|
|||
|
</body>
|
|||
|
</html>
|