Deploying to gh-pages from @ d5d13c3174 🚀

This commit is contained in:
3b1b 2021-01-31 06:26:40 +00:00
parent fe1be42d61
commit b18a7ba298
24 changed files with 263 additions and 109 deletions

View file

@ -103,14 +103,22 @@ TexTransformExample
class TexTransformExample(Scene):
def construct(self):
kw = {
"isolate": ["B", "C", "=", "(", ")"]
}
to_isolate = ["B", "C", "=", "(", ")"]
lines = VGroup(
# Surrounding substrings with double braces
# will ensure that those parts are separated
# out in the Tex. For example, here the
# Tex will have 5 submobjects, corresponding
# to the strings [A^2, +, B^2, =, C^2]
Tex("{{A^2}} + {{B^2}} = {{C^2}}"),
Tex("{{A^2}} = {{C^2}} - {{B^2}}"),
Tex("{{A^2}} = (C + B)(C - B)", **kw),
Tex("A = \\sqrt{(C + B)(C - B)}", **kw)
# Alternatively, you can pass in the keyword argument
# "isolate" with a list of strings that should be out as
# their own submobject. So both lines below are equivalent
# to what you'd get by wrapping every instance of "B", "C"
# "=", "(" and ")" with double braces
Tex("{{A^2}} = (C + B)(C - B)", isolate=to_isolate),
Tex("A = \\sqrt{(C + B)(C - B)}", isolate=to_isolate)
)
lines.arrange(DOWN, buff=LARGE_BUFF)
for line in lines:
@ -122,6 +130,11 @@ TexTransformExample
play_kw = {"run_time": 2}
self.add(lines[0])
# The animation TransformMatchingTex will line up parts
# of the source and target which have matching tex strings.
# Here, giving it a little path_arc makes each part sort of
# rotate into their final positions, which feels appropriate
# for the idea of rearranging an equation
self.play(
TransformMatchingTex(
lines[0].copy(), lines[1],
@ -131,11 +144,17 @@ TexTransformExample
)
self.wait()
# Now, we could try this again on the next line...
self.play(
TransformMatchingTex(lines[1].copy(), lines[2]),
**play_kw
)
self.wait()
# ...and this looks nice enough, but since there's no tex
# in lines[2] which matches "C^2" or "B^2", those terms fade
# out to nothing while the C and B terms fade in from nothing.
# If, however, we want the C^2 to go to C, and B^2 to go to B,
# we can specify that with a key map.
self.play(FadeOut(lines[2]))
self.play(
TransformMatchingTex(
@ -149,18 +168,37 @@ TexTransformExample
)
self.wait()
# And to finish off, a simple TransformMatchingShapes would work
# just fine. But perhaps we want that exponent on A^2 to transform into
# the square root symbol. At the moment, lines[2] treats the expression
# A^2 as a unit, so we might create a new version of the same line which
# separates out just the A. This way, when TransformMatchingTex lines up
# all matching parts, the only mismatch will be between the "^2" from
# new_line2 and the "\sqrt" from the final line. By passing in,
# transform_mismatches=True, it will transform this "^2" part into
# the "\sqrt" part.
new_line2 = Tex("{{A}}^2 = (C + B)(C - B)", isolate=to_isolate)
new_line2.replace(lines[2])
new_line2.match_style(lines[2])
self.play(
TransformMatchingTex(
lines[2].copy(), lines[3],
fade_transform_mismatches=True,
new_line2, lines[3],
transform_mismatches=True,
),
**play_kw
)
self.wait(3)
self.play(FadeOut(lines, RIGHT))
source = TexText("the morse code")
target = TexText("here come dots")
# Alternatively, if you don't want to think about breaking up
# the tex strings deliberately, you can TransformMatchingShapes,
# which will try to line up all pieces of a source mobject with
# those of a target, regardless of the submobject hierarchy in
# each one, according to whether those pieces have the same
# shape (as best it can).
source = Text("the morse code", height=1)
target = Text("here come dots", height=1)
self.play(Write(source))
self.wait()
@ -186,34 +224,73 @@ UpdatersExample
class UpdatersExample(Scene):
def construct(self):
decimal = DecimalNumber(
0,
show_ellipsis=True,
num_decimal_places=3,
include_sign=True,
)
square = Square()
square.to_edge(UP)
square.set_fill(BLUE_E, 1)
always(decimal.next_to, square)
f_always(decimal.set_value, square.get_y)
# On all all frames, the constructor Brace(square, UP) will
# be called, and the mobject brace will set its data to match
# that of the newly constructed object
brace = always_redraw(Brace, square, UP)
self.add(square, decimal)
text, number = label = VGroup(
Text("Width = "),
DecimalNumber(
0,
show_ellipsis=True,
num_decimal_places=2,
include_sign=True,
)
)
label.arrange(RIGHT)
# This ensures that the method deicmal.next_to(square)
# is called on every frame
always(label.next_to, brace, UP)
# You could also write the following equivalent line
# label.add_updater(lambda m: m.next_to(brace, UP))
# If the argument itself might change, you can use f_always,
# for which the arguments following the initial Mobject method
# should be functions returning arguments to that method.
# The following line ensures thst decimal.set_value(square.get_y())
# is called every frame
f_always(number.set_value, square.get_width)
# You could also write the following equivalent line
# number.add_updater(lambda m: m.set_value(square.get_width()))
self.add(square, brace, label)
# Notice that the brace and label track with the square
self.play(
square.to_edge, DOWN,
square.scale, 2,
rate_func=there_and_back,
run_time=2,
)
self.wait()
self.play(
square.set_width, 5, {"stretch": True},
run_time=3,
)
self.play(square.center)
self.wait()
self.play(
square.set_width, 2,
run_time=3
)
self.wait()
# In general, you can alway call Mobject.add_updater, and pass in
# a function that you want to be called on every frame. The function
# should take in either one argument, the mobject, or two arguments,
# the mobject and the amount of time since the last frame.
now = self.time
w0 = square.get_width()
square.add_updater(
lambda m: m.set_y(math.sin(self.time - now))
lambda m: m.set_width(w0 * math.cos(self.time - now))
)
self.wait(10)
self.wait(4 * PI)
The new classes and usage in this scene are ``DecimalNumber``, ``.to_edge()``,
``.center()``, ``always()``, ``f_always()``, ``.set_y()`` and ``.add_updater()``.
``.center()``, ``always_become()``, ``always()``, ``f_always()``, ``.set_y()`` and ``.add_updater()``.
- ``DecimalNumber`` is a variable number, speed it up by breaking it into ``Tex`` characters.
- ``.to_edge()`` means to place the object on the edge of the screen.

View file

@ -8,8 +8,8 @@
<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?040938c8769fe85cdf5c2151">
<link rel="stylesheet" href="../_static/pygments.css?040938c8769fe85cdf5c2151">
<link rel="stylesheet" href="../_static/styles/default.css?40f5bdd5419b290f70dfdc32">
<link rel="stylesheet" href="../_static/pygments.css?40f5bdd5419b290f70dfdc32">
<style>
:root {
@ -25,7 +25,7 @@
<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?040938c8769fe85cdf5c2151"></script></head>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script><script src="../_static/scripts/main.js?40f5bdd5419b290f70dfdc32"></script></head>
<body dir="">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">

View file

@ -8,8 +8,8 @@
<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?f5ba6e76b48e69b83333e3f5">
<link rel="stylesheet" href="../_static/pygments.css?f5ba6e76b48e69b83333e3f5">
<link rel="stylesheet" href="../_static/styles/default.css?173ba2290e25acf0c89cf847">
<link rel="stylesheet" href="../_static/pygments.css?173ba2290e25acf0c89cf847">
<style>
:root {
@ -25,7 +25,7 @@
<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?f5ba6e76b48e69b83333e3f5"></script></head>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script><script src="../_static/scripts/main.js?173ba2290e25acf0c89cf847"></script></head>
<body dir="">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">

View file

@ -8,8 +8,8 @@
<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?4d110a776786223ba26610d1">
<link rel="stylesheet" href="../_static/pygments.css?4d110a776786223ba26610d1">
<link rel="stylesheet" href="../_static/styles/default.css?a5e0c35c5505963622983f3f">
<link rel="stylesheet" href="../_static/pygments.css?a5e0c35c5505963622983f3f">
<style>
:root {
@ -25,7 +25,7 @@
<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?4d110a776786223ba26610d1"></script></head>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script><script src="../_static/scripts/main.js?a5e0c35c5505963622983f3f"></script></head>
<body dir="">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">

View file

@ -8,8 +8,8 @@
<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?a038900123f7762bcffbc12d">
<link rel="stylesheet" href="../../_static/pygments.css?a038900123f7762bcffbc12d">
<link rel="stylesheet" href="../../_static/styles/default.css?c52d8b70979336a18c75faf0">
<link rel="stylesheet" href="../../_static/pygments.css?c52d8b70979336a18c75faf0">
<style>
:root {
@ -25,7 +25,7 @@
<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?a038900123f7762bcffbc12d"></script></head>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script><script src="../../_static/scripts/main.js?c52d8b70979336a18c75faf0"></script></head>
<body dir="">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">

View file

@ -8,8 +8,8 @@
<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?67eebec55d0ca2a4e921f1c9">
<link rel="stylesheet" href="../../_static/pygments.css?67eebec55d0ca2a4e921f1c9">
<link rel="stylesheet" href="../../_static/styles/default.css?f37ba08d26614e9fbc0d9875">
<link rel="stylesheet" href="../../_static/pygments.css?f37ba08d26614e9fbc0d9875">
<style>
:root {
@ -25,7 +25,7 @@
<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?67eebec55d0ca2a4e921f1c9"></script></head>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script><script src="../../_static/scripts/main.js?f37ba08d26614e9fbc0d9875"></script></head>
<body dir="">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">

View file

@ -8,8 +8,8 @@
<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?bf9f2d50ea905777e0ba87ae">
<link rel="stylesheet" href="../_static/pygments.css?bf9f2d50ea905777e0ba87ae">
<link rel="stylesheet" href="../_static/styles/default.css?1c8725eef23c59b0d9dcafa1">
<link rel="stylesheet" href="../_static/pygments.css?1c8725eef23c59b0d9dcafa1">
<style>
:root {
@ -25,7 +25,7 @@
<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?bf9f2d50ea905777e0ba87ae"></script></head>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script><script src="../_static/scripts/main.js?1c8725eef23c59b0d9dcafa1"></script></head>
<body dir="">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">

View file

@ -8,8 +8,8 @@
<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?bb427f4c3f61c84ba846fb10">
<link rel="stylesheet" href="../_static/pygments.css?bb427f4c3f61c84ba846fb10">
<link rel="stylesheet" href="../_static/styles/default.css?561a71f536e1760270d91628">
<link rel="stylesheet" href="../_static/pygments.css?561a71f536e1760270d91628">
<style>
:root {
@ -25,7 +25,7 @@
<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?bb427f4c3f61c84ba846fb10"></script></head>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script><script src="../_static/scripts/main.js?561a71f536e1760270d91628"></script></head>
<body dir="">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">

View file

@ -8,8 +8,8 @@
<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?3933d83b2912bcc75f6e68e6">
<link rel="stylesheet" href="../../_static/pygments.css?3933d83b2912bcc75f6e68e6">
<link rel="stylesheet" href="../../_static/styles/default.css?7fcd7dc4edb2360db1dbde09">
<link rel="stylesheet" href="../../_static/pygments.css?7fcd7dc4edb2360db1dbde09">
<style>
:root {
@ -25,7 +25,7 @@
<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?3933d83b2912bcc75f6e68e6"></script></head>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script><script src="../../_static/scripts/main.js?7fcd7dc4edb2360db1dbde09"></script></head>
<body dir="">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">

View file

@ -8,8 +8,8 @@
<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?e633e62d1ce61a0eae5853bc">
<link rel="stylesheet" href="../../_static/pygments.css?e633e62d1ce61a0eae5853bc">
<link rel="stylesheet" href="../../_static/styles/default.css?a0329f333bf2a3bd2bba0ab0">
<link rel="stylesheet" href="../../_static/pygments.css?a0329f333bf2a3bd2bba0ab0">
<style>
:root {
@ -25,7 +25,7 @@
<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?e633e62d1ce61a0eae5853bc"></script></head>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script><script src="../../_static/scripts/main.js?a0329f333bf2a3bd2bba0ab0"></script></head>
<body dir="">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">

View file

@ -8,8 +8,8 @@
<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?7424f5629adc927f03443fdc">
<link rel="stylesheet" href="../../_static/pygments.css?7424f5629adc927f03443fdc">
<link rel="stylesheet" href="../../_static/styles/default.css?fcc6968f79d37f606d58f0eb">
<link rel="stylesheet" href="../../_static/pygments.css?fcc6968f79d37f606d58f0eb">
<style>
:root {
@ -25,7 +25,7 @@
<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?7424f5629adc927f03443fdc"></script></head>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script><script src="../../_static/scripts/main.js?fcc6968f79d37f606d58f0eb"></script></head>
<body dir="">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">

View file

@ -8,8 +8,8 @@
<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?27e56e0b62b00f7321fa76a1">
<link rel="stylesheet" href="../../_static/pygments.css?27e56e0b62b00f7321fa76a1">
<link rel="stylesheet" href="../../_static/styles/default.css?856948d82fbf88dc4e326a9e">
<link rel="stylesheet" href="../../_static/pygments.css?856948d82fbf88dc4e326a9e">
<style>
:root {
@ -25,7 +25,7 @@
<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?27e56e0b62b00f7321fa76a1"></script></head>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script><script src="../../_static/scripts/main.js?856948d82fbf88dc4e326a9e"></script></head>
<body dir="">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">

View file

@ -8,8 +8,8 @@
<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?243b5d55b4927eafd21ce946">
<link rel="stylesheet" href="_static/pygments.css?243b5d55b4927eafd21ce946">
<link rel="stylesheet" href="_static/styles/default.css?99e4beec85e5efd87a454130">
<link rel="stylesheet" href="_static/pygments.css?99e4beec85e5efd87a454130">
<style>
:root {
@ -25,7 +25,7 @@
<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?243b5d55b4927eafd21ce946"></script></head>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script><script src="_static/scripts/main.js?99e4beec85e5efd87a454130"></script></head>
<body dir="">
</body>

View file

@ -8,8 +8,8 @@
<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?12e7f81ad222bfd95fc7419a">
<link rel="stylesheet" href="../_static/pygments.css?12e7f81ad222bfd95fc7419a">
<link rel="stylesheet" href="../_static/styles/default.css?266487234454bb3cd833628f">
<link rel="stylesheet" href="../_static/pygments.css?266487234454bb3cd833628f">
<style>
:root {
@ -25,7 +25,7 @@
<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?12e7f81ad222bfd95fc7419a"></script></head>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script><script src="../_static/scripts/main.js?266487234454bb3cd833628f"></script></head>
<body dir="">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">

View file

@ -8,8 +8,8 @@
<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?a9708e2a7d9505cc0ea411ce">
<link rel="stylesheet" href="../_static/pygments.css?a9708e2a7d9505cc0ea411ce">
<link rel="stylesheet" href="../_static/styles/default.css?593d5bd0582b9194b9912723">
<link rel="stylesheet" href="../_static/pygments.css?593d5bd0582b9194b9912723">
<style>
:root {
@ -25,7 +25,7 @@
<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?a9708e2a7d9505cc0ea411ce"></script></head>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script><script src="../_static/scripts/main.js?593d5bd0582b9194b9912723"></script></head>
<body dir="">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">

View file

@ -8,8 +8,8 @@
<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">
<link rel="stylesheet" href="../_static/styles/default.css?91e5691214934ea810d71707">
<link rel="stylesheet" href="../_static/pygments.css?91e5691214934ea810d71707">
<style>
:root {
@ -25,7 +25,7 @@
<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>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script><script src="../_static/scripts/main.js?91e5691214934ea810d71707"></script></head>
<body dir="">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
@ -209,14 +209,22 @@ applying a function.</p>
<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">to_isolate</span> <span class="o">=</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="n">lines</span> <span class="o">=</span> <span class="n">VGroup</span><span class="p">(</span>
<span class="c1"># Surrounding substrings with double braces</span>
<span class="c1"># will ensure that those parts are separated</span>
<span class="c1"># out in the Tex. For example, here the</span>
<span class="c1"># Tex will have 5 submobjects, corresponding</span>
<span class="c1"># to the strings [A^2, +, B^2, =, C^2]</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="c1"># Alternatively, you can pass in the keyword argument</span>
<span class="c1"># "isolate" with a list of strings that should be out as</span>
<span class="c1"># their own submobject. So both lines below are equivalent</span>
<span class="c1"># to what you'd get by wrapping every instance of "B", "C"</span>
<span class="c1"># "=", "(" and ")" with double braces</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="n">isolate</span><span class="o">=</span><span class="n">to_isolate</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="n">isolate</span><span class="o">=</span><span class="n">to_isolate</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>
@ -228,6 +236,11 @@ applying a function.</p>
<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="c1"># The animation TransformMatchingTex will line up parts</span>
<span class="c1"># of the source and target which have matching tex strings.</span>
<span class="c1"># Here, giving it a little path_arc makes each part sort of</span>
<span class="c1"># rotate into their final positions, which feels appropriate</span>
<span class="c1"># for the idea of rearranging an equation</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>
@ -237,11 +250,17 @@ applying a function.</p>
<span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
<span class="c1"># Now, we could try this again on the next line...</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="c1"># ...and this looks nice enough, but since there's no tex</span>
<span class="c1"># in lines[2] which matches "C^2" or "B^2", those terms fade</span>
<span class="c1"># out to nothing while the C and B terms fade in from nothing.</span>
<span class="c1"># If, however, we want the C^2 to go to C, and B^2 to go to B,</span>
<span class="c1"># we can specify that with a key map.</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>
@ -255,18 +274,37 @@ applying a function.</p>
<span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
<span class="c1"># And to finish off, a simple TransformMatchingShapes would work</span>
<span class="c1"># just fine. But perhaps we want that exponent on A^2 to transform into</span>
<span class="c1"># the square root symbol. At the moment, lines[2] treats the expression</span>
<span class="c1"># A^2 as a unit, so we might create a new version of the same line which</span>
<span class="c1"># separates out just the A. This way, when TransformMatchingTex lines up</span>
<span class="c1"># all matching parts, the only mismatch will be between the "^2" from</span>
<span class="c1"># new_line2 and the "\sqrt" from the final line. By passing in,</span>
<span class="c1"># transform_mismatches=True, it will transform this "^2" part into</span>
<span class="c1"># the "\sqrt" part.</span>
<span class="n">new_line2</span> <span class="o">=</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="n">isolate</span><span class="o">=</span><span class="n">to_isolate</span><span class="p">)</span>
<span class="n">new_line2</span><span class="o">.</span><span class="n">replace</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">new_line2</span><span class="o">.</span><span class="n">match_style</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">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="n">new_line2</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">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="c1"># Alternatively, if you don't want to think about breaking up</span>
<span class="c1"># the tex strings deliberately, you can TransformMatchingShapes,</span>
<span class="c1"># which will try to line up all pieces of a source mobject with</span>
<span class="c1"># those of a target, regardless of the submobject hierarchy in</span>
<span class="c1"># each one, according to whether those pieces have the same</span>
<span class="c1"># shape (as best it can).</span>
<span class="n">source</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span><span class="s2">"the morse code"</span><span class="p">,</span> <span class="n">height</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="n">target</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span><span class="s2">"here come dots"</span><span class="p">,</span> <span class="n">height</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">source</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
@ -290,35 +328,74 @@ and <code class="docutils literal notranslate"><span class="pre">TransformMatchi
<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">square</span><span class="o">.</span><span class="n">set_fill</span><span class="p">(</span><span class="n">BLUE_E</span><span class="p">,</span> <span class="mi">1</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="c1"># On all all frames, the constructor Brace(square, UP) will</span>
<span class="c1"># be called, and the mobject brace will set its data to match</span>
<span class="c1"># that of the newly constructed object</span>
<span class="n">brace</span> <span class="o">=</span> <span class="n">always_redraw</span><span class="p">(</span><span class="n">Brace</span><span class="p">,</span> <span class="n">square</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">square</span><span class="p">,</span> <span class="n">decimal</span><span class="p">)</span>
<span class="n">text</span><span class="p">,</span> <span class="n">number</span> <span class="o">=</span> <span class="n">label</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">"Width = "</span><span class="p">),</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">2</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="p">)</span>
<span class="n">label</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="c1"># This ensures that the method deicmal.next_to(square)</span>
<span class="c1"># is called on every frame</span>
<span class="n">always</span><span class="p">(</span><span class="n">label</span><span class="o">.</span><span class="n">next_to</span><span class="p">,</span> <span class="n">brace</span><span class="p">,</span> <span class="n">UP</span><span class="p">)</span>
<span class="c1"># You could also write the following equivalent line</span>
<span class="c1"># label.add_updater(lambda m: m.next_to(brace, UP))</span>
<span class="c1"># If the argument itself might change, you can use f_always,</span>
<span class="c1"># for which the arguments following the initial Mobject method</span>
<span class="c1"># should be functions returning arguments to that method.</span>
<span class="c1"># The following line ensures thst decimal.set_value(square.get_y())</span>
<span class="c1"># is called every frame</span>
<span class="n">f_always</span><span class="p">(</span><span class="n">number</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_width</span><span class="p">)</span>
<span class="c1"># You could also write the following equivalent line</span>
<span class="c1"># number.add_updater(lambda m: m.set_value(square.get_width()))</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">brace</span><span class="p">,</span> <span class="n">label</span><span class="p">)</span>
<span class="c1"># Notice that the brace and label track with the square</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">square</span><span class="o">.</span><span class="n">scale</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span>
<span class="n">rate_func</span><span class="o">=</span><span class="n">there_and_back</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="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">square</span><span class="o">.</span><span class="n">set_width</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="p">{</span><span class="s2">"stretch"</span><span class="p">:</span> <span class="bp">True</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="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">set_width</span><span class="p">,</span> <span class="mi">2</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="c1"># In general, you can alway call Mobject.add_updater, and pass in</span>
<span class="c1"># a function that you want to be called on every frame. The function</span>
<span class="c1"># should take in either one argument, the mobject, or two arguments,</span>
<span class="c1"># the mobject and the amount of time since the last frame.</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">w0</span> <span class="o">=</span> <span class="n">square</span><span class="o">.</span><span class="n">get_width</span><span class="p">()</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="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_width</span><span class="p">(</span><span class="n">w0</span> <span class="o">*</span> <span class="n">math</span><span class="o">.</span><span class="n">cos</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>
<span class="bp">self</span><span class="o">.</span><span class="n">wait</span><span class="p">(</span><span class="mi">4</span> <span class="o">*</span> <span class="n">PI</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>
<code class="docutils literal notranslate"><span class="pre">.center()</span></code>, <code class="docutils literal notranslate"><span class="pre">always_become()</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>

View file

@ -8,8 +8,8 @@
<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?b26db8a0a61f9f05457c114f">
<link rel="stylesheet" href="../_static/pygments.css?b26db8a0a61f9f05457c114f">
<link rel="stylesheet" href="../_static/styles/default.css?cb5626d39958b0704c064e63">
<link rel="stylesheet" href="../_static/pygments.css?cb5626d39958b0704c064e63">
<style>
:root {
@ -25,7 +25,7 @@
<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?b26db8a0a61f9f05457c114f"></script></head>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script><script src="../_static/scripts/main.js?cb5626d39958b0704c064e63"></script></head>
<body dir="">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">

View file

@ -8,8 +8,8 @@
<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?db0976617da4ac1310cb186e">
<link rel="stylesheet" href="../_static/pygments.css?db0976617da4ac1310cb186e">
<link rel="stylesheet" href="../_static/styles/default.css?f951f85788336876b8e8999c">
<link rel="stylesheet" href="../_static/pygments.css?f951f85788336876b8e8999c">
<style>
:root {
@ -25,7 +25,7 @@
<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?db0976617da4ac1310cb186e"></script></head>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script><script src="../_static/scripts/main.js?f951f85788336876b8e8999c"></script></head>
<body dir="">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">

View file

@ -8,8 +8,8 @@
<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?4d50c159ed3f981a5cad9420">
<link rel="stylesheet" href="../_static/pygments.css?4d50c159ed3f981a5cad9420">
<link rel="stylesheet" href="../_static/styles/default.css?98cf3fedd810d5fa5494c5eb">
<link rel="stylesheet" href="../_static/pygments.css?98cf3fedd810d5fa5494c5eb">
<style>
:root {
@ -25,7 +25,7 @@
<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?4d50c159ed3f981a5cad9420"></script></head>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script><script src="../_static/scripts/main.js?98cf3fedd810d5fa5494c5eb"></script></head>
<body dir="">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">

View file

@ -8,8 +8,8 @@
<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?8ac17cb7b7bd17de64106b6b">
<link rel="stylesheet" href="_static/pygments.css?8ac17cb7b7bd17de64106b6b">
<link rel="stylesheet" href="_static/styles/default.css?0e33c89f37d878b0e737c1fc">
<link rel="stylesheet" href="_static/pygments.css?0e33c89f37d878b0e737c1fc">
<style>
:root {
@ -25,7 +25,7 @@
<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?8ac17cb7b7bd17de64106b6b"></script></head>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script><script src="_static/scripts/main.js?0e33c89f37d878b0e737c1fc"></script></head>
<body dir="">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">

View file

@ -6,8 +6,8 @@
<link rel="shortcut icon" href="_static/icon.png"/><meta name="generator" content="sphinx-3.4.3, furo 2020.10.05.beta9"/><title>Search - 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?9cd963fd5392d17278d8c09a">
<link rel="stylesheet" href="_static/pygments.css?9cd963fd5392d17278d8c09a">
<link rel="stylesheet" href="_static/styles/default.css?a705e2f7e21462a1833b482b">
<link rel="stylesheet" href="_static/pygments.css?a705e2f7e21462a1833b482b">
<style>
:root {
@ -24,7 +24,7 @@
<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/searchtools.js" defer></script><script src="_static/scripts/main.js?9cd963fd5392d17278d8c09a"></script></head>
<script src="_static/searchtools.js" defer></script><script src="_static/scripts/main.js?a705e2f7e21462a1833b482b"></script></head>
<body dir="">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">

File diff suppressed because one or more lines are too long