Vectorized Mobject

VMobjectMobject 的子类,使用贝塞尔曲线来表示物体

VMobject

class manimlib.mobject.types.vectorized_mobject.VMobject(**kwargs)

初始化样式,VMobject 的样式有以下

  • fill 填充样式

    • 颜色: fill_colorcolor

    • 不透明度: fill_opacity

  • stroke 线条样式

    • 颜色: stroke_colorcolor

    • 宽度: stroke_width

    • 不透明度: stroke_opacity

  • gloss 光泽

  • shadow 阴影

  • reflectiveness 反光度

其中, color, opacity, width 属性均可以为一个列表,在渲染时会按照列表对其进行补间

add_cubic_bezier_curve_to(handle1: npt.ArrayLike, handle2: npt.ArrayLike, anchor: npt.ArrayLike)

添加一条三阶贝塞尔曲线(可能不准)

add_line_to(point: numpy.ndarray)

添加一条直线

add_quadratic_bezier_curve_to(handle: numpy.ndarray, anchor: numpy.ndarray)

添加一条二阶贝塞尔曲线

add_smooth_curve_to(point: numpy.ndarray)

添加一条平滑的曲线

align_points(vmobject: manimlib.mobject.types.vectorized_mobject.VMobject)

对齐锚点,主要用于 Transform 的内部实现

apply_function(function: Callable[[np.ndarray], np.ndarray], make_smooth: bool = False, **kwargs)

对物件执行 function 函数

change_anchor_mode(mode: str)

改变曲线连接模式

  • jagged : 折线

  • approx_smooth : 大致平滑

  • true_smooth : 真正平滑

close_path()

用直线闭合该曲线

consider_points_equals(p0: numpy.ndarray, p1: numpy.ndarray) → bool

判断两点是否大致重合

fade(darkness: float = 0.5, recurse: bool = True)

变暗

flip(axis: numpy.ndarray = array([0., 1., 0.]), **kwargs)

绕 axis 轴翻转

get_anchors_and_handles() → list

获取二阶贝塞尔曲线的锚点和手柄

get_area_vector() → numpy.ndarray

返回一个向量,其长度为锚点形成的多边形所围成的面积,根据右手定则指向垂直于该多边形的方向。

get_color() → str

获取颜色

get_fill_color() → str

获取填充色

如果是渐变染色,则只会返回颜色列表的第一个

get_fill_opacity() → float

获取透明度

如果是渐变透明度,则只会返回透明度列表的第一个

get_last_point() → numpy.ndarray

获取路径最后一个锚点

get_nth_curve_function(n: int) → Callable[[float], np.ndarray]

获取组成曲线的第 n 条贝塞尔曲线函数

get_nth_curve_points(n: int) → numpy.ndarray

获取组成曲线的第 n 条贝塞尔曲线的锚点

get_num_curves() → int

获取组成曲线的贝塞尔曲线数量

get_opacity() → float

获取透明度

get_shader_wrapper_list() → list

获取 shader 包装列表

get_style()

获取样式字典

get_subcurve(a: float, b: float)manimlib.mobject.types.vectorized_mobject.VMobject

获取路径上百分比为 a 到 b 的部分

get_unit_normal(recompute: bool = False) → numpy.ndarray

获取单位法向量

insert_n_curves(n: int, recurse: bool = True)

将物件切割成 n 个小段的拼接,常用于复杂函数变换

interpolate(mobject1: manimlib.mobject.types.vectorized_mobject.VMobject, mobject2: manimlib.mobject.types.vectorized_mobject.VMobject, alpha: float, *args, **kwargs)

mobject1 到 mobject2 百分比为 alpha 的补间

is_closed() → bool

判断曲线是否闭合

make_approximately_smooth()

使曲线变得大致平滑

这个方法不像 make_smooth,本方法不会使锚点数量加倍,与此同时带来了无法达到完美平滑的问题

但是这个方法在锚点采样间隔较小时会有比较好的效果,所以有时会更实用

make_jagged()

使曲线模式变为折线

make_smooth()

使曲线变平滑

这个方法会使得锚点数量加倍,所以 不要重复使用,否则锚点数量会 指数爆炸

同时,应用 Transform 时有可能会出现奇怪的曲线

match_style(vmobject: manimlib.mobject.types.vectorized_mobject.VMobject, recurse: bool = True)

将自身样式与传入的 vmobject 匹配

point_from_proportion(alpha: float) → numpy.ndarray

在整条路径上占比为 alpha 处的点

pointwise_become_partial(vmobject: manimlib.mobject.types.vectorized_mobject.VMobject, a: float, b: float)

返回 vmobject 上百分比从 a 到 b 的部分曲线的拷贝

quick_point_from_proportion(alpha: float) → numpy.ndarray

在整条路径上占比为 alpha 处的点

这个方法建立在假设所有弧线长度相同的条件下,因此可能有一些误差,但是性能更好

refresh_triangulation()

重置三角剖分

set_anchors_and_handles(anchors1: numpy.ndarray, handles: numpy.ndarray, anchors2: numpy.ndarray)

设置二阶贝塞尔曲线的锚点和手柄

set_backstroke(color: ManimColor | Iterable[ManimColor] = '#000000', width: float | Iterable[float] = 3, background: bool = True)

设置背景轮廓线(轮廓线衬于填充色下方)

set_color(color: ManimColor | Iterable[ManimColor] | None, opacity: float | Iterable[float] | None = None, recurse: bool = True)

设置颜色

set_data(data: dict)

设置成员数据,以字典形式传入

set_fill(color: ManimColor | Iterable[ManimColor] | None = None, opacity: float | Iterable[float] | None = None, recurse: bool = True)

设置填充色

set_opacity(opacity: float | Iterable[float] | None, recurse: bool = True)

设置透明度

set_points(points: npt.ArrayLike)

设置物件的锚点,传入的数组必须为 Nx3

set_points_as_corners(points: Iterable[np.ndarray])

传入一个 Nx3 的数组,绘制顺序连接的折线

set_points_smoothly(points: Iterable[np.ndarray], true_smooth: bool = False)

用平滑的曲线连接传入的系列点

set_rgba_array(rgba_array: npt.ArrayLike, name: str = None, recurse: bool = False)

将 rgbas 成员变量设置为指定的值

set_stroke(color: ManimColor | Iterable[ManimColor] | None = None, width: float | Iterable[float] | None = None, opacity: float | Iterable[float] | None = None, background: bool | None = None, recurse: bool = True)

设置轮廓线(轮廓线浮于填充色上方)

set_style(fill_color: ManimColor | Iterable[ManimColor] | None = None, fill_opacity: float | Iterable[float] | None = None, fill_rgba: npt.ArrayLike | None = None, stroke_color: ManimColor | Iterable[ManimColor] | None = None, stroke_opacity: float | Iterable[float] | None = None, stroke_rgba: npt.ArrayLike | None = None, stroke_width: float | Iterable[float] | None = None, stroke_background: bool = True, reflectiveness: float | None = None, gloss: float | None = None, shadow: float | None = None, recurse: bool = True)

整体设置样式

start_new_path(point: numpy.ndarray)

开启一个新的路径

VGroup

class manimlib.mobject.types.vectorized_mobject.VGroup(*vmobjects: manimlib.mobject.types.vectorized_mobject.VMobject, **kwargs)

VMobject 相同,主要用作包含一些子物体(必须都是 VMobject)

初始化样式,VMobject 的样式有以下

  • fill 填充样式

    • 颜色: fill_colorcolor

    • 不透明度: fill_opacity

  • stroke 线条样式

    • 颜色: stroke_colorcolor

    • 宽度: stroke_width

    • 不透明度: stroke_opacity

  • gloss 光泽

  • shadow 阴影

  • reflectiveness 反光度

其中, color, opacity, width 属性均可以为一个列表,在渲染时会按照列表对其进行补间

VectorizedPoint

class manimlib.mobject.types.vectorized_mobject.VectorizedPoint(location: numpy.ndarray = array([0., 0., 0.]), **kwargs)

以 VMobject 形式存在的单个点

似乎仅用于表示坐标

CurvesAsSubmobjects

class manimlib.mobject.types.vectorized_mobject.CurvesAsSubmobjects(vmobject: manimlib.mobject.types.vectorized_mobject.VMobject, **kwargs)

传入一个 VMobject 实例(物体),将其所有段曲线作为子物体(一个子物体为一条曲线)

初始化样式,VMobject 的样式有以下

  • fill 填充样式

    • 颜色: fill_colorcolor

    • 不透明度: fill_opacity

  • stroke 线条样式

    • 颜色: stroke_colorcolor

    • 宽度: stroke_width

    • 不透明度: stroke_opacity

  • gloss 光泽

  • shadow 阴影

  • reflectiveness 反光度

其中, color, opacity, width 属性均可以为一个列表,在渲染时会按照列表对其进行补间

DashedVMobject

class manimlib.mobject.types.vectorized_mobject.DashedVMobject(vmobject: manimlib.mobject.types.vectorized_mobject.VMobject, **kwargs)

传入一个 VMobject 实例(物体),将其所有曲线全部设为虚线

  • 传入 num_dashed 表示分为多少段虚线

  • 传入 positive_space_ratio 表示虚实比例

初始化样式,VMobject 的样式有以下

  • fill 填充样式

    • 颜色: fill_colorcolor

    • 不透明度: fill_opacity

  • stroke 线条样式

    • 颜色: stroke_colorcolor

    • 宽度: stroke_width

    • 不透明度: stroke_opacity

  • gloss 光泽

  • shadow 阴影

  • reflectiveness 反光度

其中, color, opacity, width 属性均可以为一个列表,在渲染时会按照列表对其进行补间