数字¶
影片代码
import manimgx as m
class NumbersHero(m.Scene):
def construct(self) -> None:
number = m.DecimalNumber(0, num_decimal_places=2, font_size=96, color=m.YELLOW)
variable = m.Variable(0, m.MathTex("x"), num_decimal_places=2).scale(1.5)
tracker = variable.tracker
m.VGroup(number, variable).arrange(m.DOWN, buff=1)
def follow(mobject: m.DecimalNumber) -> None:
mobject.set_value(tracker.get_value())
number.add_updater(follow)
self.add(number, variable)
self.play(tracker.animate.set_value(3.14), run_time=2)
self.wait()
数字是知道自身值的文本。set_value 在其位置显示另一个 值,外观保持不变,因此数字可在场景播放时计数:通过在每个帧设置它的 更新器,或通过 ChangeDecimalToValue。
DecimalNumber
¶

代码
import manimgx as m
class DecimalNumberExample(m.Scene):
def construct(self) -> None:
numbers = m.VGroup(
m.DecimalNumber(3.14159),
m.DecimalNumber(1234567.891, num_decimal_places=1),
m.DecimalNumber(42, include_sign=True, color=m.YELLOW),
m.DecimalNumber(90, num_decimal_places=0, unit=r"^\circ"),
m.DecimalNumber(3.14159, num_decimal_places=4, show_ellipsis=True),
)
self.add(numbers.arrange(m.DOWN, buff=0.4).scale(1.5))
一个数字,以固定的小数位数书写:默认为白色且填充,除非另行设置样式。
其组成部分依次为各个字符,每个字符由 mob_class 排版:符号、数字、逗号和小数点;
然后是"…"和单位(如果有的话)(若要求,则在所有这些之前有一个背景矩形)。
所显示的数字经过舍入(舍入为零的负数会丢失其符号,复数的任一分量亦然),
复数以 a+bi 形式书写。
set_value 显示另一个数字,
同时保持字体大小、颜色以及边缘 edge_to_fix 不变:
由值跟踪器或
ChangeDecimalToValue 驱动时,数字在屏幕上计数。
类型检查器会根据初始值的类型推断:默认为实数,复数初始值则为复数。
使用 DecimalNumber[complex](0) 可从实数开始,之后再接受复数值。
number要显示的数字;也可以是复数。
num_decimal_places小数点后跟随的数字位数。
mob_class每个字符排版所用的类。
include_sign非负数是否带加号书写。
group_with_commas小数点前的数字是否按三位一组用逗号分组。
digit_buff_per_font_unit字符之间的间距,按字体大小单位计 (0.001:在 48 时为 0.048 个场景单位)。
show_ellipsis数字后是否跟"…"。
unit数字后的单位,以 LaTeX 数学表示(
"^\circ"、r"\text{ m}"); 以 "^" 开头的单位会提升到数字的顶部。unit_buff_per_font_unit单位前的间距,超出字符间距之外的部分, 按字体大小单位计。
include_background_rectangle数字后是否有背景矩形。
edge_to_fix当新值改变数字宽度时保持不动的边缘,以方向表示。
font_size字符的字体大小,以
mob_class的度量方式计。color填充与描边共用的颜色(默认白色);None 表示该类的默认值。
fill_color填充的颜色;未给出时为
color。多个颜色沿sheen_direction构成渐变。fill_opacity填充的不透明度,取值从 0 到 1(默认 0:无填充)。
stroke_color描边的颜色;未给出时为
color。多个颜色构成渐变。stroke_opacity描边的不透明度,取值从 0 到 1(默认 1)。
stroke_width描边的宽度,以场景单位的百分之一计(默认 4;0:无描边)。
background_stroke_color绘制于填充之后的轮廓颜色(默认黑色)。
background_stroke_opacity轮廓的不透明度,取值从 0 到 1(默认 1)。
background_stroke_width轮廓的宽度,以场景单位的百分之一计(默认 0:无)。
sheen_factor颜色朝
sheen_direction变亮的程度,取值从 -1 到 1(默认 0); 负值变暗。sheen_direction颜色变亮的方向(默认
UL)。joint_type描边在路径转折处的连接方式:圆角、斜切或斜接,按二维场景的绘制方式 (参见 LineJointType;默认 AUTO:斜接)。
cap_style描边在其显示的每一端的端点样式(开放路径的端点、虚线的端点):圆头、平头 或方头,按二维场景的绘制方式(参见 CapStyleType;默认 AUTO:平头)。
shade_in_3d三维场景的光是否对该 mobject 着色。
material其表面在三维场景中如何反射场景的光(参见 Material);None:Manim 的着色(默认)。
namemobject 的名称;未给出时为其类名。
z_index其在绘制顺序中的位置:索引较高者绘制于较低者之上 (默认 0)。
targetMoveToTarget将 mobject 移动至的状态。
还接受 样式关键字。
源码
manimgx\mobjects\numbers.py
font_size
¶
get_value
¶
increment_value
¶
set_value
¶
代码
import manimgx as m
class DecimalNumberSetValueExample(m.Scene):
def construct(self) -> None:
tracker = m.ValueTracker(0)
number = m.DecimalNumber(0, font_size=144).shift(2 * m.LEFT)
number.add_updater(lambda n: n.set_value(tracker.get_value()))
self.add(number)
self.play(tracker.animate.set_value(100), run_time=3)
显示另一个数字,保持外观不变:字体大小、边缘 edge_to_fix 的位置以及
颜色——每个字符都取数字自身的颜色,因此赋予单个字符的颜色不会被保留。
number要显示的数字。
源码
manimgx\mobjects\numbers.py
Integer
¶
一个整数:没有小数位的 DecimalNumber, 默认为白色且填充,除非另行设置样式。
带小数部分的数字会舍入显示,且 get_value 也会对其舍入。
number要显示的数字。
num_decimal_places小数点后跟随的数字位数:除非给定,否则为零。
mob_class每个字符排版所用的类(默认为 MathTex)。
include_sign非负数是否带加号书写(默认为 False)。
group_with_commas小数点前的数字是否按三位一组用逗号分组,如 12,345(默认为 True)。
digit_buff_per_font_unit字符之间的间距,按字体大小单位计:默认值 0.001 在字体大小 48 时为 0.048 个场景单位。
show_ellipsis数字后是否跟"…",用于表示持续变化的值(默认为 False)。
unit数字后的单位,以 LaTeX 数学表示:
"^\circ"表示度,r"\text{ m}"表示米; 以 "^" 开头的单位会提升到数字的顶部(默认为 None)。unit_buff_per_font_unit单位前的间距,超出字符间距之外的部分,按字体大小单位计(默认为 0)。
include_background_rectangle数字后是否有背景矩形(默认为 False)。
edge_to_fix当新值改变数字宽度时保持不动的边缘,以方向表示(默认为 LEFT:向右生长)。
font_size字符的字体大小,以
mob_class的度量方式计(默认为 48)。color填充与描边共用的颜色(默认白色);None 表示该类的默认值。
fill_color填充的颜色;未给出时为
color。多个颜色沿sheen_direction构成渐变。fill_opacity填充的不透明度,取值从 0 到 1(默认 0:无填充)。
stroke_color描边的颜色;未给出时为
color。多个颜色构成渐变。stroke_opacity描边的不透明度,取值从 0 到 1(默认 1)。
stroke_width描边的宽度,以场景单位的百分之一计(默认 4;0:无描边)。
background_stroke_color绘制于填充之后的轮廓颜色(默认黑色)。
background_stroke_opacity轮廓的不透明度,取值从 0 到 1(默认 1)。
background_stroke_width轮廓的宽度,以场景单位的百分之一计(默认 0:无)。
sheen_factor颜色朝
sheen_direction变亮的程度,取值从 -1 到 1(默认 0); 负值变暗。sheen_direction颜色变亮的方向(默认
UL)。joint_type描边在路径转折处的连接方式:圆角、斜切或斜接,按二维场景的绘制方式 (参见 LineJointType;默认 AUTO:斜接)。
cap_style描边在其显示的每一端的端点样式(开放路径的端点、虚线的端点):圆头、平头 或方头,按二维场景的绘制方式(参见 CapStyleType;默认 AUTO:平头)。
shade_in_3d三维场景的光是否对该 mobject 着色。
material其表面在三维场景中如何反射场景的光(参见 Material);None:Manim 的着色(默认)。
namemobject 的名称;未给出时为其类名。
z_index其在绘制顺序中的位置:索引较高者绘制于较低者之上 (默认 0)。
targetMoveToTarget将 mobject 移动至的状态。
源码
manimgx\mobjects\numbers.py
Variable
¶
代码
import manimgx as m
class VariableExample(m.Scene):
def construct(self) -> None:
x = m.Variable(2.0, "x", num_decimal_places=3)
y = m.Variable(4.0, "x^2", num_decimal_places=3)
self.add(m.VGroup(x, y).arrange(m.DOWN, buff=0.5).scale(2))
t = x.tracker
y.add_updater(lambda v: v.tracker.set_value(t.get_value() ** 2))
self.play(t.animate.set_value(5), run_time=3, rate_func=m.linear)
一个带名称的值:由一个标签、"=" 和一个显示值跟踪器值的数字组成。
其组成部分依次为它的 label,接着是 "=",以及它的 value——一个 DecimalNumber 或 Integer,在每一帧显示其 tracker 的值:对跟踪器进行动画,数字即开始计数。
m.Variable(var, label, var_type=DecimalNumber, num_decimal_places=2, **kwargs)
var起始值。
label标签:一个字符串,以数学形式排版(MathTex), 或一个文本或数学 mobject。
var_type数字的类:DecimalNumber 或其子类,例如 Integer。
num_decimal_places小数点后跟随的数字位数。Integer 类 使用其自身的精度默认值。
color填充与描边共用的颜色(默认白色);None 表示该类的默认值。
fill_color填充的颜色;未给出时为
color。多个颜色沿sheen_direction构成渐变。fill_opacity填充的不透明度,取值从 0 到 1(默认 0:无填充)。
stroke_color描边的颜色;未给出时为
color。多个颜色构成渐变。stroke_opacity描边的不透明度,取值从 0 到 1(默认 1)。
stroke_width描边的宽度,以场景单位的百分之一计(默认 4;0:无描边)。
background_stroke_color绘制于填充之后的轮廓颜色(默认黑色)。
background_stroke_opacity轮廓的不透明度,取值从 0 到 1(默认 1)。
background_stroke_width轮廓的宽度,以场景单位的百分之一计(默认 0:无)。
sheen_factor颜色朝
sheen_direction变亮的程度,取值从 -1 到 1(默认 0); 负值变暗。sheen_direction颜色变亮的方向(默认
UL)。joint_type描边在路径转折处的连接方式:圆角、斜切或斜接,按二维场景的绘制方式 (参见 LineJointType;默认 AUTO:斜接)。
cap_style描边在其显示的每一端的端点样式(开放路径的端点、虚线的端点):圆头、平头 或方头,按二维场景的绘制方式(参见 CapStyleType;默认 AUTO:平头)。
shade_in_3d三维场景的光是否对该 mobject 着色。
material其表面在三维场景中如何反射场景的光(参见 Material);None:Manim 的着色(默认)。
namemobject 的名称;未给出时为其类名。
z_index其在绘制顺序中的位置:索引较高者绘制于较低者之上 (默认 0)。
targetMoveToTarget将 mobject 移动至的状态。
还接受 样式关键字。
源码
manimgx\mobjects\numbers.py
计数至某个值¶
ChangeDecimalToValue
¶
将一个数字计数到某个值。
它从动画创建时所持有的值变化到 target_number,由速率函数缓动。
decimal_mob要改变的数字。
target_number它结束时所达到的值。
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
ChangingDecimal
¶
随动画进度改变一个数字所显示的值。
在每一帧,该数字显示 number_update_func 在进度(从 0 到 1,
由速率函数缓动)处的取值。
decimal_mob要改变的数字。
number_update_func从进度到要显示的值的函数。
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