-
Notifications
You must be signed in to change notification settings - Fork 82
mobject 数学对象
鹤翔万里 edited this page Mar 19, 2020
·
2 revisions
Mobject
,即Mathematical Object,是所有屏幕上出现的物体的父类
位于文件manimlib/mobject/mobject.py
中
父类为Container
-
color
: 默认颜色(白) -
name
: 指定物体名称,方便调试时使用。若为None
则默认为类名 -
dim
:维度,默认三维 -
target
:目标物体,默认None
-
-
__init__(self, **kwargs)
初始化self.submobjects
,self.updaters
为空列表
self.updating_suspended=False
,不暂停update
调用reset_points()
,generate_points()
,init_colors()
方法 -
__str__(self)
定义为self.name
-
reset_points(self)
self.points
为空 -
init_colors(self)
留给子类 -
generate_points(self)
留给子类
-
-
-
add(self, *mobjects)
将mobjects添加到submobjects列表后面 -
add_to_back(self, *mobjects)
将mobjects添加到submobjects列表前面 -
remove(self, *mobjects)
将mobjects从submobjects列表中删去 -
get_array_attrs(self)
获取属性(在这里就是points) -
digest_mobject_attrs(self)
确保作为mobjects的所有属性都包含在submobjects列表中 -
apply_over_attr_arrays(self, func)
对所有通过get_array_attrs()
获取的属性施加func的作用
-
-
-
get_image(self, camera=None)
通过camera获取图像 -
show(self, camera=None)
获取图像后显示出来 -
save_image(self, name=None)
获取图像后保存到VIDEO_DIR文件夹中 -
copy(self)
复制一份 -
deepcopy(self)
深度复制 -
generate_target(self, use_deepcopy=False)
将该物体copy一份作为target
-
-
-
update(self, dt=0, recursive=True)
对当前物体执行updaters列表中的所有updater- 如果这个updater有参数
dt
,则传入dt - 如果recursive=True,则对submobject也执行update方法
- 如果这个updater有参数
-
get_time_based_updaters(self)
获取updaters列表中所有含有参数dt
的updater -
has_time_based_updaters(self)
如果updaters列表中所有含有参数dt
,返回Ture,否则返回False -
get_updaters(self)
获取updaters列表 -
get_family_updaters(self)
获取submobjects中所有updaters -
add_updater(self, update_function, index=None, call_updater=True)
- 如果index=None或无index参数,在updaters列表中加入update_function
- 如果index!=None,在updaters的index位置插入update_function
- 如果call_updater=True或无call_updater参数,对当前物体执行updaters列表中的所有updater
- update_function中有无dt参数的区别:
-
self.add(Circle(radius=3).add_updater(update_function=lambda m:m.shift(RIGHT*0.05))).wait(3)
-
self.add(Circle(radius=3).add_updater(update_function=lambda m,dt:m.shift(RIGHT*0.05))).wait(3)
-
-
remove_updater(self, update_function)
在updaters列表里移除update_function -
clear_updaters(self, recursive=True)
将updaters列表清空 -
match_updaters(self, mobject)
用参数mobject的updaters列表替换self的updaters列表- example:
cir = Circle(radius=3).add_updater(update_function=lambda m,dt:m.shift(RIGHT*0.05)) dot = Dot().match_updaters(cir) self.add(cir,dot) self.wait(3)
- example:
-
suspend_updating(self, recursive=True)
递归赋submobjects的updating_suspended为False
-
-
-
apply_to_family(self, func)
对self所有submobjects应用func方法 -
shift(self, *vectors)
使当前物体沿vectors移动 -
scale(self, scale_factor, **kwargs):
\- scale_factor:
使当前物体大小变为原来的scale_factor倍 - **kwargs:
一个包含about_point和about_edge的字典 - example:
cir = Circle(radius=1,stroke_width=6) self.add(cir) self.play(cir.scale,3,{"about_point":LEFT})
- scale_factor:
-
rotate_about_origin(self, angle, axis=OUT, axes=[])
使当前物体沿axis轴,ORIGIN点旋转angle度- example:
rectg = Rectangle() self.add(rectg) self.play(rectg.rotate_about_origin,PI/3)
- example:
-
rotate(self, angle, axis=OUT, **kwargs)
\- angle:旋转角度
- axis:旋转轴
- **kwargs:一个包含about_point和about_edge的字典
- example:
rectg = Rectangle() self.add(rectg) self.play(rectg.rotate,PI/3,{"about_point":LEFT*2})
-
flip(self, axis=UP, **kwargs)
使当前物体沿axis轴翻转,可以在字典中约束about_point和about_edge- example:
trig = RegularPolygon(3).scale(2) self.add(trig) self.play(trig.flip) self.play(trig.flip,{"about_point":RIGHT}) self.play(trig.flip,{"about_point":RIGHT,"about_edge":RIGHT})
- example:
-
stretch(self, factor, dim, **kwargs)
使当前物体拉伸factor倍- example:
trig = RegularPolygon(3).scale(2) self.add(trig) self.play(trig.stretch,2,0)#dim=0,长拉伸2倍 self.play(trig.stretch,2,1)#dim=1,宽拉伸2倍 self.play(trig.stretch,2,2)#dim=1,高拉伸2倍,二维物体无效
- example:
-