变换¶
影片代码
import manimgx as m
class TransformsHero(m.Scene):
def construct(self) -> None:
square = m.Square(color=m.BLUE, fill_opacity=0.5).shift(3 * m.LEFT)
circle = m.Circle(color=m.PINK, fill_opacity=0.5).shift(3 * m.LEFT)
star = m.Star(color=m.YELLOW, fill_opacity=0.5).shift(3 * m.RIGHT)
self.play(m.Create(square))
self.play(m.ReplacementTransform(square, circle))
self.play(m.TransformFromCopy(circle, star, path_arc=m.PI / 2))
self.play(m.Swap(circle, star))
self.wait()
变换将一个 mobject 变为另一个:其点行进到另一个的点,其样式融入另一个的样式。 ReplacementTransform 随后将另一个 mobject 放在其 位置,以便你继续使用新的 mobject;Transform 保留第一个 mobject, 此时它已变为另一个的形状。要将一个公式逐部分变为另一个,匹配它们各部分: TransformMatchingTex。
每个点沿直线行进,除非你给定一条弧线:path_arc=m.PI 让每个点绕半圈行进。路径函数可
选择任何其他方式。
Transform
¶
代码
import manimgx as m
class TransformExample(m.Scene):
def construct(self) -> None:
square = m.Square(side_length=3, color=m.BLUE, fill_opacity=0.5)
circle = m.Circle(radius=1.5, color=m.YELLOW, fill_opacity=0.5)
square.shift(3 * m.LEFT)
circle.shift(3 * m.RIGHT)
self.add(square)
self.play(m.Transform(square, circle, path_arc=m.PI / 2, run_time=2))
将一个 mobject 变换为另一个的形状和样式。
该 mobject 留在场景中,结束时外观与 target_mobject 一致,后者不会被添加
(使用 ReplacementTransform 时,目标会取代
mobject 的位置)。它们的各部分被一一对应匹配(部分较少的一侧会增加一些,
每一对的点也是如此),因此 mobject 最终可能拥有比原来更多的部分。每个点
从起点到终点沿直线行进,或通过 path_arc 沿弧行进。
在同一 mobject 上同时开始的变换会进行合成:square.animate.shift(RIGHT) 与
Rotate(square) 一起播放会移动并旋转正方形。较晚开始的变换会从其他变换
将该 mobject 带到的位置接管它。带有更新器且不在场景中的目标会在动画播放
期间移动(动画会运行其更新器),mobject 会跟随它。
m.Transform(mobject, target_mobject=None, path_func=None, path_arc=0, path_arc_axis=OUT, path_arc_centers=None, replace_mobject_with_target_in_scene=False, *, keys=None, **kwargs)
mobject要变换的 mobject。
target_mobject它要变成的 mobject;当省略
keys时,None 会创建一个空 目标。仅传入keys时target_mobject保持为 None。path_func每个点从起点到终点的行进方式:以起点、终点和进度为参数的函数 (参见 paths);它替代
path_arc和path_arc_centers。 None:直线路径。path_arc每个点在行进过程中转过的角度,以弧度为单位:0 为直线路径, 正角度表示逆时针旋转。
path_arc_axispath_arc的弧所绕的轴。path_arc_centersmobject 在行进过程中绕其转过
path_arc的点,或为每个 点各指定一个;None:每个点绕自身弧的中心旋转。replace_mobject_with_target_in_scene动画结束时独立的目标是否取代 mobject 的位置。没有此类目标的预设保留其通常的移除或恢复行为。
keys依次经过的两个或更多状态:None 表示动画开始时的 mobject,为其函数, 或为一个 mobject,在动画开始时复制。未提供时,状态为 mobject 和
target_mobject。run_time动画播放时长,以秒为单位(默认 1)。
lag_ratiomobject 各部分如何交错:每个部分在其前一个部分开始后,经过其运行时长的该分数比例后开始 (默认 0:全部同时;1:一个接一个)。
rate_func动画进度如何随时间运行:一个从 [0, 1] 到 [0, 1] 的函数 (默认为
smooth;参见 rate functions)。reverse_rate_function是否反向运行动画(默认 False)。
name动画的名称。
remover动画结束时 mobject 是否离开场景 (默认 False)。
suspend_mobject_updating动画期间 mobject 的更新器是否在其下运行(默认 True):它们 持续作用于 mobject,每一帧显示动画应用于其结果。 若为 False,则它们作用于被动画的 mobject 本身。
introducer动画开始时 mobject 是否加入场景(默认 False); 否则若场景缺少它,play 在其开始时将其带入。
use_override若某 mobject 的类用另一个动画代替此动画播放,是否如此执行 (默认 True)。
还接受 动画关键字。
源码
manimgx\animation\transform.py
path_arc
¶
ReplacementTransform
¶
代码
import manimgx as m
class ReplacementTransformExample(m.Scene):
def construct(self) -> None:
numbers = m.VGroup(*(m.MathTex(n, font_size=144) for n in "123"))
numbers.arrange(buff=3)
self.add(numbers[0])
self.play(m.ReplacementTransform(numbers[0], numbers[1]))
self.play(m.ReplacementTransform(numbers[1], numbers[2]))
将一个 mobject 变换为另一个,后者随后取代其在场景中的位置。
其播放方式与 Transform 相同;动画结束时,
target_mobject 位于场景中 mobject 原先所在的位置,而 mobject 不再在场景中:
可继续对目标进行动画。
mobject要变换的 mobject;它将离开场景。
target_mobject它所变成的 mobject,取代其位置。
run_time动画播放时长,以秒为单位(默认 1)。
lag_ratiomobject 各部分如何交错:每个部分在其前一个部分开始后,经过其运行时长的该分数比例后开始 (默认 0:全部同时;1:一个接一个)。
rate_func动画进度如何随时间运行:一个从 [0, 1] 到 [0, 1] 的函数 (默认为
smooth;参见 rate functions)。reverse_rate_function是否反向运行动画(默认 False)。
name动画的名称。
remover动画结束时 mobject 是否离开场景 (默认 False)。
suspend_mobject_updating动画期间 mobject 的更新器是否在其下运行(默认 True):它们 持续作用于 mobject,每一帧显示动画应用于其结果。 若为 False,则它们作用于被动画的 mobject 本身。
introducer动画开始时 mobject 是否加入场景(默认 False); 否则若场景缺少它,play 在其开始时将其带入。
use_override若某 mobject 的类用另一个动画代替此动画播放,是否如此执行 (默认 True)。
还接受 变换关键字。
源码
manimgx\animation\motion.py
TransformFromCopy
¶
代码
import manimgx as m
class TransformFromCopyExample(m.Scene):
def construct(self) -> None:
square = m.Square(side_length=2.5, color=m.BLUE, fill_opacity=0.5)
circle = m.Circle(radius=1.25, color=m.YELLOW, fill_opacity=0.5)
square.shift(3 * m.LEFT)
circle.shift(3 * m.RIGHT)
self.add(square)
self.play(m.TransformFromCopy(square, circle, run_time=2))
将一个 mobject 的副本变换为另一个,而该 mobject 留在原处。
target_mobject 加入场景,起始为该 mobject 的副本并变为自身;
该 mobject 保持原状。
mobject制作副本所用的 mobject。
target_mobject副本所变成的 mobject;它加入场景。
run_time动画播放时长,以秒为单位(默认 1)。
lag_ratiomobject 各部分如何交错:每个部分在其前一个部分开始后,经过其运行时长的该分数比例后开始 (默认 0:全部同时;1:一个接一个)。
rate_func动画进度如何随时间运行:一个从 [0, 1] 到 [0, 1] 的函数 (默认为
smooth;参见 rate functions)。reverse_rate_function是否反向运行动画(默认 False)。
name动画的名称。
remover动画结束时 mobject 是否离开场景 (默认 False)。
suspend_mobject_updating动画期间 mobject 的更新器是否在其下运行(默认 True):它们 持续作用于 mobject,每一帧显示动画应用于其结果。 若为 False,则它们作用于被动画的 mobject 本身。
introducer动画开始时 mobject 是否加入场景(默认 False); 否则若场景缺少它,play 在其开始时将其带入。
use_override若某 mobject 的类用另一个动画代替此动画播放,是否如此执行 (默认 True)。
还接受 变换关键字。
源码
manimgx\animation\motion.py
ClockwiseTransform
¶
代码
import manimgx as m
class ClockwiseTransformExample(m.Scene):
def construct(self) -> None:
dot = m.Dot(2.5 * m.LEFT, radius=0.3, color=m.YELLOW)
square = m.Square(side_length=1.5, color=m.BLUE, fill_opacity=0.5)
square.shift(2.5 * m.RIGHT)
self.add(dot)
self.play(m.ClockwiseTransform(dot, square, run_time=2))
沿顺时针半圆将一个 mobject 变换为另一个。
每个点从其起点到终点沿顺时针半圆移动:即一个
path_arc 为 −π 的 Transform,除非另行指定。
mobject要变换的 mobject。
target_mobject它所取得的形状与样式的 mobject。
run_time动画播放时长,以秒为单位(默认 1)。
lag_ratiomobject 各部分如何交错:每个部分在其前一个部分开始后,经过其运行时长的该分数比例后开始 (默认 0:全部同时;1:一个接一个)。
rate_func动画进度如何随时间运行:一个从 [0, 1] 到 [0, 1] 的函数 (默认为
smooth;参见 rate functions)。reverse_rate_function是否反向运行动画(默认 False)。
name动画的名称。
remover动画结束时 mobject 是否离开场景 (默认 False)。
suspend_mobject_updating动画期间 mobject 的更新器是否在其下运行(默认 True):它们 持续作用于 mobject,每一帧显示动画应用于其结果。 若为 False,则它们作用于被动画的 mobject 本身。
introducer动画开始时 mobject 是否加入场景(默认 False); 否则若场景缺少它,play 在其开始时将其带入。
use_override若某 mobject 的类用另一个动画代替此动画播放,是否如此执行 (默认 True)。
还接受 变换关键字。
源码
manimgx\animation\motion.py
CounterclockwiseTransform
¶
代码
import manimgx as m
class CounterclockwiseTransformExample(m.Scene):
def construct(self) -> None:
square = m.Square(side_length=1.5, color=m.BLUE, fill_opacity=0.5)
circle = m.Circle(radius=0.75, color=m.YELLOW, fill_opacity=0.5)
square.shift(2.5 * m.RIGHT)
circle.shift(2.5 * m.LEFT)
self.add(square)
self.play(m.CounterclockwiseTransform(square, circle, run_time=2))
沿逆时针半圆将一个 mobject 变换为另一个。
每个点从其起点到终点沿逆时针半圆移动:即一个
path_arc 为 π 的 Transform,除非另行指定。
mobject要变换的 mobject。
target_mobject它所取得的形状与样式的 mobject。
run_time动画播放时长,以秒为单位(默认 1)。
lag_ratiomobject 各部分如何交错:每个部分在其前一个部分开始后,经过其运行时长的该分数比例后开始 (默认 0:全部同时;1:一个接一个)。
rate_func动画进度如何随时间运行:一个从 [0, 1] 到 [0, 1] 的函数 (默认为
smooth;参见 rate functions)。reverse_rate_function是否反向运行动画(默认 False)。
name动画的名称。
remover动画结束时 mobject 是否离开场景 (默认 False)。
suspend_mobject_updating动画期间 mobject 的更新器是否在其下运行(默认 True):它们 持续作用于 mobject,每一帧显示动画应用于其结果。 若为 False,则它们作用于被动画的 mobject 本身。
introducer动画开始时 mobject 是否加入场景(默认 False); 否则若场景缺少它,play 在其开始时将其带入。
use_override若某 mobject 的类用另一个动画代替此动画播放,是否如此执行 (默认 True)。
还接受 变换关键字。
源码
manimgx\animation\motion.py
FadeTransform
¶
代码
import manimgx as m
class FadeTransformExample(m.Scene):
def construct(self) -> None:
rectangle = m.Rectangle(
width=4, height=1.5, color=m.BLUE, fill_opacity=0.5
).shift(3 * m.LEFT)
circle = m.Circle(radius=1.5, color=m.YELLOW, fill_opacity=0.5)
circle.shift(3 * m.RIGHT)
self.add(rectangle)
self.play(m.FadeTransform(rectangle, circle, run_time=2))
将一个 mobject 交叉淡入为另一个,各自移向对方的位置与大小。
该 mobject 在移动并拉伸到 target_mobject 的过程中淡出,
而目标从该 mobject 的位置与大小淡入。动画结束时,目标位于场景中,
而该 mobject 不在场景中(它恢复为动画创建时的状态)。
mobject要淡出的 mobject。
target_mobject要淡入的 mobject;它加入场景。
stretch是否各自被拉伸到对方的宽度和高度;若否,则均匀缩放以匹配 维度
dim_to_match。dim_to_match不拉伸时匹配的维度:0 为宽度,1 为高度。
run_time动画播放时长,以秒为单位(默认 1)。
lag_ratiomobject 各部分如何交错:每个部分在其前一个部分开始后,经过其运行时长的该分数比例后开始 (默认 0:全部同时;1:一个接一个)。
rate_func动画进度如何随时间运行:一个从 [0, 1] 到 [0, 1] 的函数 (默认为
smooth;参见 rate functions)。reverse_rate_function是否反向运行动画(默认 False)。
name动画的名称。
remover动画结束时 mobject 是否离开场景 (默认 False)。
suspend_mobject_updating动画期间 mobject 的更新器是否在其下运行(默认 True):它们 持续作用于 mobject,每一帧显示动画应用于其结果。 若为 False,则它们作用于被动画的 mobject 本身。
introducer动画开始时 mobject 是否加入场景(默认 False); 否则若场景缺少它,play 在其开始时将其带入。
use_override若某 mobject 的类用另一个动画代替此动画播放,是否如此执行 (默认 True)。
还接受 变换关键字。
源码
manimgx\animation\motion.py
FadeTransformPieces
¶
代码
import manimgx as m
class FadeTransformPiecesExample(m.Scene):
def construct(self) -> None:
source = m.VGroup(m.Square(), m.Circle().shift(m.LEFT + m.UP))
target = m.VGroup(m.Circle(), m.Triangle().shift(m.RIGHT + m.DOWN))
source.set_color(m.BLUE).shift(3 * m.LEFT)
target.set_color(m.YELLOW).shift(3 * m.RIGHT)
self.add(source)
self.play(m.FadeTransformPieces(source, target, run_time=2))
将一个 mobject 逐部分交叉淡入为另一个。
两者的各部分被配对,每个部分如 FadeTransform
对整体所做的那样交叉淡入到其匹配部分。
mobject要淡出的 mobject。
target_mobject要淡入的 mobject;它加入场景。
stretch是否每个部分被拉伸到其匹配部分的宽度和高度;若否, 则均匀缩放以匹配维度
dim_to_match。dim_to_match不拉伸时匹配的维度:0 为宽度,1 为高度。
run_time动画播放时长,以秒为单位(默认 1)。
lag_ratiomobject 各部分如何交错:每个部分在其前一个部分开始后,经过其运行时长的该分数比例后开始 (默认 0:全部同时;1:一个接一个)。
rate_func动画进度如何随时间运行:一个从 [0, 1] 到 [0, 1] 的函数 (默认为
smooth;参见 rate functions)。reverse_rate_function是否反向运行动画(默认 False)。
name动画的名称。
remover动画结束时 mobject 是否离开场景 (默认 False)。
suspend_mobject_updating动画期间 mobject 的更新器是否在其下运行(默认 True):它们 持续作用于 mobject,每一帧显示动画应用于其结果。 若为 False,则它们作用于被动画的 mobject 本身。
introducer动画开始时 mobject 是否加入场景(默认 False); 否则若场景缺少它,play 在其开始时将其带入。
use_override若某 mobject 的类用另一个动画代替此动画播放,是否如此执行 (默认 True)。
还接受 变换关键字。
源码
manimgx\animation\motion.py
匹配各部分¶
TransformMatchingTex
¶
代码
import manimgx as m
class TransformMatchingTexExample(m.Scene):
def construct(self) -> None:
before = m.MathTex("a^2", "+", "b^2", "=", "c^2", font_size=120)
after = m.MathTex("a^2", "=", "c^2", "-", "b^2", font_size=120)
self.add(before)
self.play(
m.TransformMatchingTex(before, after, path_arc=m.PI / 2), run_time=2
)
self.wait(0.5)
通过匹配各部分将一个公式变换为另一个:每个部分移动到以相同方式书写的部分,其余部分淡入淡出。
MathTex 的各部分是构成它的字符串:所给定的参数以及 {{…}} 在其中
分隔出的内容,并进一步在其 substrings_to_isolate 处和其 tex_to_color_map 的字符串处
切分(组的各部分是其成员的各部分)。当两部分的字符串相同时它们匹配,因此应将每个需要移动
的项作为独立参数给出。动画结束时,target_mobject 出现在场景中 mobject 的位置。
mobject要变换的公式:一个
MathTex,或一组MathTex。target_mobject它将变成的公式。
transform_mismatches未匹配的部分是否变换为目标的未匹配部分,而非淡入淡出。
fade_transform_mismatches它们是否交叉淡入到目标的未匹配部分 (参见
FadeTransformPieces),而非淡入淡出。key_map尽管不同但仍要匹配的字符串对:以第一种方式书写的
mobject部分交叉淡入到 以第二种方式书写的目标部分。这些匹配优先于相等的键。run_time动画播放时长,以秒为单位(默认 1)。
lag_ratiomobject 各部分如何交错:每个部分在其前一个部分开始后,经过其运行时长的该分数比例后开始 (默认 0:全部同时;1:一个接一个)。
rate_func动画进度如何随时间运行:一个从 [0, 1] 到 [0, 1] 的函数 (默认为
smooth;参见 rate functions)。reverse_rate_function是否反向运行动画(默认 False)。
name动画的名称。
remover动画结束时 mobject 是否离开场景 (默认 False)。
suspend_mobject_updating动画期间 mobject 的更新器是否在其下运行(默认 True):它们 持续作用于 mobject,每一帧显示动画应用于其结果。 若为 False,则它们作用于被动画的 mobject 本身。
introducer动画开始时 mobject 是否加入场景(默认 False); 否则若场景缺少它,play 在其开始时将其带入。
use_override若某 mobject 的类用另一个动画代替此动画播放,是否如此执行 (默认 True)。
还接受 变换关键字。
源码
manimgx\animation\matching.py
TransformMatchingShapes
¶
代码
import manimgx as m
class TransformMatchingShapesExample(m.Scene):
def construct(self) -> None:
source = m.Text("the morse code", font_size=96)
target = m.Text("here come dots", font_size=96, color=m.YELLOW)
self.add(source)
self.play(
m.TransformMatchingShapes(source, target, path_arc=m.PI / 2),
run_time=2,
)
self.wait(0.5)
通过匹配形状将一个 mobject 变换为另一个:每个部分移动到同形状的部分,其余部分淡入淡出。
各部分是带有点的成员(文本的字母);当两部分具有相同形状时它们匹配,无论其大小和位置如何
(它们的点经居中并缩放至高度为 1 后,在 3 位小数精度上一致)。因此文本逐字母地变为它的
字母重排。动画结束时,target_mobject 出现在场景中 mobject 的位置。
mobject要变换的 mobject。
target_mobject它将变成的 mobject。
transform_mismatches未匹配的部分是否变换为目标的未匹配部分,而非淡入淡出。
fade_transform_mismatches它们是否交叉淡入到目标的未匹配部分 (参见
FadeTransformPieces),而非淡入淡出。key_map尽管不同但仍要匹配的键对:
mobject中具有第一个键的部分交叉淡入到 目标中具有第二个键的部分。这些匹配优先于相等的键。run_time动画播放时长,以秒为单位(默认 1)。
lag_ratiomobject 各部分如何交错:每个部分在其前一个部分开始后,经过其运行时长的该分数比例后开始 (默认 0:全部同时;1:一个接一个)。
rate_func动画进度如何随时间运行:一个从 [0, 1] 到 [0, 1] 的函数 (默认为
smooth;参见 rate functions)。reverse_rate_function是否反向运行动画(默认 False)。
name动画的名称。
remover动画结束时 mobject 是否离开场景 (默认 False)。
suspend_mobject_updating动画期间 mobject 的更新器是否在其下运行(默认 True):它们 持续作用于 mobject,每一帧显示动画应用于其结果。 若为 False,则它们作用于被动画的 mobject 本身。
introducer动画开始时 mobject 是否加入场景(默认 False); 否则若场景缺少它,play 在其开始时将其带入。
use_override若某 mobject 的类用另一个动画代替此动画播放,是否如此执行 (默认 True)。
还接受 变换关键字。
源码
manimgx\animation\matching.py
交换位置¶
Swap
¶
交换两个 mobject 的位置,各自沿弧线移动。
与 CyclicReplace 相同,后者对两个 mobject
将每个移到另一个的位置。
*mobjects这两个 mobject。
run_time动画播放时长,以秒为单位(默认 1)。
lag_ratiomobject 各部分如何交错:每个部分在其前一个部分开始后,经过其运行时长的该分数比例后开始 (默认 0:全部同时;1:一个接一个)。
rate_func动画进度如何随时间运行:一个从 [0, 1] 到 [0, 1] 的函数 (默认为
smooth;参见 rate functions)。reverse_rate_function是否反向运行动画(默认 False)。
name动画的名称。
remover动画结束时 mobject 是否离开场景 (默认 False)。
suspend_mobject_updating动画期间 mobject 的更新器是否在其下运行(默认 True):它们 持续作用于 mobject,每一帧显示动画应用于其结果。 若为 False,则它们作用于被动画的 mobject 本身。
introducer动画开始时 mobject 是否加入场景(默认 False); 否则若场景缺少它,play 在其开始时将其带入。
use_override若某 mobject 的类用另一个动画代替此动画播放,是否如此执行 (默认 True)。
还接受 变换关键字。
源码
manimgx\animation\motion.py
CyclicReplace
¶
代码
import manimgx as m
class CyclicReplaceExample(m.Scene):
def construct(self) -> None:
shapes = m.VGroup(
m.Square(color=m.BLUE),
m.Circle(color=m.YELLOW),
m.Triangle(color=m.GREEN),
m.Star(color=m.RED),
).arrange(buff=1)
self.add(shapes)
self.play(m.CyclicReplace(*shapes))
self.play(m.CyclicReplace(*shapes))
将每个 mobject 移动到下一个的位置,并将最后一个移到第一个的位置。
每个沿弧线移动,默认为 90°(path_arc)。单独给出的组被视为这些 mobject。
*mobjects这些 mobject,按循环顺序排列。
run_time动画播放时长,以秒为单位(默认 1)。
lag_ratiomobject 各部分如何交错:每个部分在其前一个部分开始后,经过其运行时长的该分数比例后开始 (默认 0:全部同时;1:一个接一个)。
rate_func动画进度如何随时间运行:一个从 [0, 1] 到 [0, 1] 的函数 (默认为
smooth;参见 rate functions)。reverse_rate_function是否反向运行动画(默认 False)。
name动画的名称。
remover动画结束时 mobject 是否离开场景 (默认 False)。
suspend_mobject_updating动画期间 mobject 的更新器是否在其下运行(默认 True):它们 持续作用于 mobject,每一帧显示动画应用于其结果。 若为 False,则它们作用于被动画的 mobject 本身。
introducer动画开始时 mobject 是否加入场景(默认 False); 否则若场景缺少它,play 在其开始时将其带入。
use_override若某 mobject 的类用另一个动画代替此动画播放,是否如此执行 (默认 True)。
还接受 变换关键字。
源码
manimgx\animation\motion.py
变换关键字¶
TransformOptions
¶
变换所接受的选项,按关键字给出:动画选项及其路径。
path_func每个点从起点到终点的行进方式:以起点、终点和进度为参数的函数 (参见 paths);它替代
path_arc和path_arc_centers(默认 None:直线路径)。path_arc每个点在行进过程中转过的角度,以弧度为单位:0 为直线路径, 正角度表示绕
path_arc_axis逆时针旋转(默认 0)。path_arc_axispath_arc的弧所绕的轴(默认OUT:在屏幕平面内)。path_arc_centersmobject 在行进过程中绕其转过
path_arc的点,或为每个点各指定一个 (默认 None:每个点绕自身弧的中心旋转)。replace_mobject_with_target_in_scene动画结束时目标是否取代 mobject 在场景中的位置,如同
ReplacementTransform(默认 False)。run_time动画播放时长,以秒为单位(默认 1)。
lag_ratiomobject 各部分如何交错:每个部分在其前一个部分开始后,经过其运行时长的该分数比例后开始 (默认 0:全部同时;1:一个接一个)。
rate_func动画进度如何随时间运行:一个从 [0, 1] 到 [0, 1] 的函数 (默认为
smooth;参见 rate functions)。reverse_rate_function是否反向运行动画(默认 False)。
name动画的名称。
remover动画结束时 mobject 是否离开场景 (默认 False)。
suspend_mobject_updating动画期间 mobject 的更新器是否在其下运行(默认 True):它们 持续作用于 mobject,每一帧显示动画应用于其结果。 若为 False,则它们作用于被动画的 mobject 本身。
introducer动画开始时 mobject 是否加入场景(默认 False); 否则若场景缺少它,play 在其开始时将其带入。
use_override若某 mobject 的类用另一个动画代替此动画播放,是否如此执行 (默认 True)。
path_func
¶
每个点从起点到终点的行进方式:以起点、终点和进度为参数的函数
(参见 paths);它替代 path_arc 和 path_arc_centers
(默认 None:直线路径)。
path_arc
¶
每个点在行进过程中转过的角度,以弧度为单位:0 为直线路径,
正角度表示绕 path_arc_axis 逆时针旋转(默认 0)。
path_arc_centers
¶
mobject 在行进过程中绕其转过 path_arc 的点,或为每个点各指定一个
(默认 None:每个点绕自身弧的中心旋转)。
replace_mobject_with_target_in_scene
¶
动画结束时目标是否取代 mobject 在场景中的位置,如同
ReplacementTransform(默认 False)。
路径¶
路径函数说明每个点如何从起点行进到终点:将一个作为 path_func 传入。
straight_path
¶
path_along_arc
¶
沿圆弧的路径:每个点沿圆弧从起点到终点,转过某个角度,即变换的
path_arc 使其移动的方式。
arc_angle每段弧转过的角度,以弧度为单位,绕
axis逆时针方向; 绝对值小于 STRAIGHT_PATH_THRESHOLD 时为 直线路径。axis各弧所绕的轴。
源码
manimgx\drawing\geometry.py
clockwise_path
¶
counterclockwise_path
¶
spiral_path
¶
螺旋路径:每个点从起点螺旋到终点,其相对起点的偏移在逆时针转过 angle
(角度为正时)的过程中增长,直至与终点成一直线。
angle每个点转过的距离,以弧度为单位,绕
axis;绝对值小于 STRAIGHT_PATH_THRESHOLD 时为 直线路径。axis各点所绕的轴。
源码
manimgx\drawing\geometry.py
path_along_circles
¶
绕各中心的路径:每个点在从起点移动到终点的同时绕其中心转过某个角度,
即变换的 path_arc_centers 使其移动的方式。
若只有一个中心,则形状作为整体绕其转动,返回一个 Path;
若每个点一个中心,则每个点绕各自的中心转动,返回一个
(start, end, alpha) 的普通函数。
arc_angle角度,以弧度为单位,绕
axis逆时针方向。centers一个中心,或每个点一个中心,以场景坐标表示。
axis各点所绕的轴。
源码
manimgx\drawing\geometry.py
Path
¶
在变换中一个形状的各点如何从其起点行进到其终点,以值的形式表示。
一条路径将每个点变到 Lₛ·start + Lₑ·end + k,其中 Lₛ、Lₑ 和 k 仅取决于
动画的进度 α:因此形状在移动时其点本身不被触碰。以 path(start, end, alpha)
形式调用,作用于点数组;下面的函数构造 ManimGX 所提供的各路径。
kind路径的种类。"motion":形状被其
steps的运动 G 携带,同时在 运动坐标系中沿直线变化, G(α)·((1 − α)·start + α·G(1)⁻¹·end);无步骤时为直线路径。 "arc":每个点沿圆弧从起点到终点,转过angle(若其两端沿axis不同,则沿该轴匀速行进)。"spiral":每个点从起点螺旋 到终点,start + α·R((α − 1)·angle)·(end − start)。angle"arc" 或 "spiral" 路径转过的角度,以弧度为单位,绕
axis逆时针方向。axis路径所绕的轴。
steps"motion" 路径的各步骤,按顺序执行:每一步为一次移动(一个向量)、 沿曲线的一次移动,或绕支点的一次转动。
m.STRAIGHT_PATH_THRESHOLD
¶
path_along_arc 和 spiral_path 所转过的最小角度,以弧度为单位:小于此值时即为 直线路径。