VMobject

全限定名: manim.mobject.types.vectorized\_mobject.VMobject

class VMobject(fill_color=None, fill_opacity=0.0, stroke_color=None, stroke_opacity=1.0, stroke_width=4, background_stroke_color=ManimColor('#000000'), background_stroke_opacity=1.0, background_stroke_width=0, sheen_factor=0.0, joint_type=None, sheen_direction=array([-1., 1., 0.]), close_new_points=False, pre_function_handle_to_anchor_scale_factor=0.01, make_smooth_after_applying_functions=False, background_image=None, shade_in_3d=False, tolerance_for_point_equality=1e-06, n_points_per_cubic_curve=4, cap_style=CapStyleType.AUTO, **kwargs)[source]

基类: Mobject

一种矢量化的mobject。

参数:
  • background_stroke_color (ParsableManimColor | None) – 背景描边的目的是为了有不会与填充重叠的内容,例如,用于文本在某种纹理背景上。

  • sheen_factor (float) – 当设置颜色c时,会根据c与白色之间通过sheen_factor插值计算出第二种颜色,并且显示将沿着sheen_direction方向渐变为该次要颜色。

  • close_new_points (bool) – 表示它不会被显示,但应计入父mobject的路径中。

  • tolerance_for_point_equality (float) – 这在一个像素内。

  • joint_type (LineJointType | None) – 用于连接此矢量化mobject曲线段的线条连接类型。有关选项,请参阅LineJointType

  • fill_color (ParsableManimColor | None)

  • fill_opacity (float)

  • stroke_color (ParsableManimColor | None)

  • stroke_opacity (float)

  • stroke_width (浮点数)

  • background_stroke_opacity (float)

  • background_stroke_width (float)

  • sheen_direction (Vector3D)

  • pre_function_handle_to_anchor_scale_factor (float)

  • make_smooth_after_applying_functions (布尔值)

  • background_image (Image | str | None)

  • shade_in_3d (bool)

  • n_points_per_cubic_curve (int)

  • cap_style (CapStyleType)

  • kwargs (Any)

方法

add_cubic_bezier_curve

add_cubic_bezier_curve_to

向路径添加三次贝塞尔曲线。

add_cubic_bezier_curves

add_line_to

从VMobject的最后一个点向给定点添加一条直线。

add_points_as_corners

VMobject.points末尾添加多条直线,这些直线按顺序从当前路径的末尾开始连接给定的points

add_quadratic_bezier_curve_to

向路径添加二次贝塞尔曲线。

add_smooth_curve_to

从给定点创建平滑曲线并将其添加到VMobject。

add_subpath

align_points

向自身和vmobject添加点,使它们都拥有相同数量的子路径,并且每个对应的子路径包含相同数量的点。

align_rgbas

append_points

将给定的new_points附加到VMobject.points的末尾。

append_vectorized_mobject

应用函数

change_anchor_mode

改变贝塞尔曲线的锚点模式。

clear_points

close_path

color_using_background_image

consider_points_equals

consider_points_equals_2d

确定两个点是否足够接近以被视为相等。

淡化

force_direction

确保点按顺时针或逆时针方向排列。

gen_cubic_bezier_tuples_from_points

从点数组返回贝塞尔元组。

gen_subpaths_from_points_2d

generate_rgbas_array

第一个参数可以是颜色,也可以是颜色元组/列表。

get_anchors

返回构成VMobject的曲线的锚点。

get_anchors_and_handles

返回anchors1、handles1、handles2、anchors2,其中(anchors1[i], handles1[i], handles2[i], anchors2[i])将是定义三次贝塞尔曲线的四个点,适用于范围(0, len(anchors1))中的任何i。

get_arc_length

返回整个曲线的近似长度。

get_background_image

获取颜色

返回Mobject的颜色

get_cubic_bezier_tuples

get_cubic_bezier_tuples_from_points

get_curve_functions

获取mobject曲线的函数。

get_curve_functions_with_lengths

获取mobject曲线的函数和长度。

get_direction

使用shoelace_direction()计算方向。

get_end_anchors

返回贝塞尔曲线的结束锚点。

get_fill_color

如果存在多种颜色(用于渐变),则返回第一种颜色

get_fill_colors

get_fill_opacities

get_fill_opacity

如果存在多个不透明度,则返回第一个

获取填充RGBA值

get_gradient_start_and_end_points

get_group_class

get_last_point

获取 mobject 类型类

返回此 mobject 类型的基类。

get_nth_curve_function

返回第n条曲线的表达式。

get_nth_curve_function_with_length

返回第n条曲线的表达式及其(近似)长度。

get_nth_curve_length

返回第n条曲线的(近似)长度。

get_nth_curve_length_pieces

返回用于长度近似的短线长度数组。

get_nth_curve_points

返回定义vmobject第n条曲线的点。

get_num_curves

返回vmobject的曲线数量。

获取点 mobject

可转换为或从自身转换的最简单的Mobject

get_points_defining_boundary

get_sheen_direction

get_sheen_factor

get_start_anchors

返回贝塞尔曲线的起始锚点。

get_stroke_color

get_stroke_colors

get_stroke_opacities

get_stroke_opacity

获取描边RGBA值

get_stroke_width

get_style

get_subcurve

返回VMobject在区间[a, b]之间的子曲线。

get_subpaths

返回由VMobject曲线形成的子路径。

get_subpaths_from_points

has_new_path_started

初始化颜色

初始化颜色。

insert_n_curves

向vmobject的贝塞尔曲线插入n条曲线。

insert_n_curves_to_point_list

给定一个定义贝塞尔曲线(锚点和手柄)的k个点数组,返回精确定义k + n条贝塞尔曲线的点。

插值颜色

is_closed

make_jagged

make_smooth

match_background_image

match_style

从比例获取点

获取VMobject路径上按比例的点。

pointwise_become_partial

给定第二个VMobject vmobject、下界a和上界b,修改此VMobject的点,使其与由vmobject.points描述的贝塞尔样条曲线在参数t介于ab之间的部分相匹配。

proportion_from_point

返回给定点在VMobject路径上的比例。

resize_points

调整锚点和手柄数组的大小以达到指定大小。

reverse_direction

通过反转点顺序来反转点方向。

rotate

围绕某个点旋转Mobject

rotate_sheen_direction

旋转所施加光泽的方向。

刻度

按比例因子缩放大小。

scale_handle_to_anchor_distances

如果给定控制点H及其相关锚点A之间的距离为d,则将H更改为距离A的factor*d,但A到H的连线不改变。

set_anchors_and_handles

给定两组锚点和控制点,处理它们以将其设置为VMobject的锚点和控制点。

set_background_stroke

set_cap_style

设置VMobject的端点样式。

设置颜色

条件是一个接受一个参数 (x, y, z) 的函数。

set_fill

设置VMobject的填充颜色和填充不透明度。

set_opacity

set_points

set_points_as_corners

给定一个点数组,将其设置为VMobject的角点。

set_points_smoothly

set_shade_in_3d

set_sheen

从一个方向应用颜色渐变。

set_sheen_direction

设置所施加光泽的方向。

set_stroke

set_style

start_new_path

将一个point添加到VMobject.points中,该点将是给定点路径中新贝塞尔曲线的起点。

update_rgbas_array

属性

animate (动画)

用于动画化 self 的任何方法的应用。

animation_overrides (动画覆盖)

颜色

depth (深度)

mobject 的深度。

fill_color (填充颜色)

如果存在多种颜色(用于渐变),则返回第一种颜色

height (高度)

mobject 的高度。

n_points_per_curve (每条曲线的点数)

sheen_factor (光泽因子)

stroke_color (描边颜色)

width (宽度)

mobject 的宽度。

_assert_valid_submobjects(submobjects)[source]

检查所有子对象是否确实是Mobject的实例,并且它们中没有一个是selfMobject不能包含自身)。

这是一个在向submobjects列表添加Mobject时调用的辅助函数。

此函数旨在由VMobject等子类覆盖,这些子类应断言只能将其他VMobject添加到其中。

参数:

submobjects (Iterable[VMobject]) – 包含要验证的值的列表。

返回:

Mobject本身。

返回类型:

Mobject

抛出:
  • TypeError – 如果submobjects中的任何值不是Mobject

  • ValueError – 如果尝试将Mobject作为其自身的子对象添加。

_gen_subpaths_from_points(points, filter_func)[source]

给定一个定义vmobject贝塞尔曲线的点数组,返回由这些点形成的子路径。在此,如果至少两个贝塞尔曲线的锚点通过filter_func定义的关联被评估为True,则它们形成一条路径。

该算法处理self.points中的每个贝塞尔元组(锚点和手柄)(通过将每个n个元素重新分组,其中n是每条三次曲线的点数),并使用filter_func评估两个锚点之间的关系。注意:filter_func以整数n作为参数,并将评估points[n]和points[n - 1]之间的关系。这可能应该更改为函数接受两个点作为参数。

参数:
  • points (CubicBezierPath) – 定义贝塞尔曲线的点。

  • filter_func (Callable[[int], bool]) – 定义关系的过滤函数。

返回:

由点形成的子路径。

返回类型:

Iterable[CubicSpline]

_original__init__(fill_color=None, fill_opacity=0.0, stroke_color=None, stroke_opacity=1.0, stroke_width=4, background_stroke_color=ManimColor('#000000'), background_stroke_opacity=1.0, background_stroke_width=0, sheen_factor=0.0, joint_type=None, sheen_direction=array([-1., 1., 0.]), close_new_points=False, pre_function_handle_to_anchor_scale_factor=0.01, make_smooth_after_applying_functions=False, background_image=None, shade_in_3d=False, tolerance_for_point_equality=1e-06, n_points_per_cubic_curve=4, cap_style=CapStyleType.AUTO, **kwargs)

初始化自身。有关准确签名,请参阅 help(type(self))。

参数:
  • fill_color (ParsableManimColor | None)

  • fill_opacity (float)

  • stroke_color (ParsableManimColor | None)

  • stroke_opacity (float)

  • stroke_width (浮点数)

  • background_stroke_color (ParsableManimColor | None)

  • background_stroke_opacity (float)

  • background_stroke_width (float)

  • sheen_factor (float)

  • joint_type (LineJointType | None)

  • sheen_direction (Vector3D)

  • close_new_points (bool)

  • pre_function_handle_to_anchor_scale_factor (float)

  • make_smooth_after_applying_functions (布尔值)

  • background_image (Image | str | None)

  • shade_in_3d (bool)

  • tolerance_for_point_equality (float)

  • n_points_per_cubic_curve (int)

  • cap_style (CapStyleType)

  • kwargs (Any)

add_cubic_bezier_curve_to(handle1, handle2, anchor)[source]

向路径添加三次贝塞尔曲线。

注意:第一个锚点不是参数,因为它默认为最后一个子路径的末尾!

参数:
返回:

自身

返回类型:

VMobject

add_line_to(point)[source]

从VMobject的最后一个点向给定点添加一条直线。

参数:

point (Point3DLike) – 直线的终点。

返回:

自身

返回类型:

VMobject

add_points_as_corners(points)[source]

VMobject.points末尾添加多条直线,这些直线按顺序从当前路径的末尾开始连接给定的points。因此,这些points将是附加到路径的新多段线的角点。

参数:

points (Point3DLike_Array) – 一个三维点数组,表示要附加到VMobject.points的多段线的角点。

返回:

VMobject自身,在将其直线添加到路径后。

返回类型:

VMobject

add_quadratic_bezier_curve_to(handle, anchor)[source]

向路径添加二次贝塞尔曲线。

返回:

自身

返回类型:

VMobject

参数:
add_smooth_curve_to(*points)[source]

从给定点创建平滑曲线并将其添加到VMobject。如果传入两个点,第一个被解释为控制点,第二个被解释为锚点。

参数:

points (Point3DLike) – 要添加平滑曲线的点(锚点和控制点,或仅锚点)

返回:

自身

返回类型:

VMobject

抛出:

ValueError – 如果给出0个或超过2个点。

align_points(vmobject)[source]

向自身和vmobject添加点,使它们都拥有相同数量的子路径,并且每个对应的子路径包含相同数量的点。

通过沿着子路径均匀细分曲线,或者通过创建由重复的单个点组成的新子路径来添加点。

参数:

vmobject (VMobject) – 要对齐点的对象。

返回:

自身

返回类型:

VMobject

append_points(new_points)[source]

将给定的new_points附加到VMobject.points的末尾。

参数:

new_points (Point3DLike_Array) – 要附加的三维点数组。

返回:

VMobject自身,在附加new_points后。

返回类型:

VMobject

change_anchor_mode(mode)[source]

改变贝塞尔曲线的锚点模式。这将修改控制点。

只有两种模式:“锯齿状”和“平滑”。

返回:

自身

返回类型:

VMobject

参数:

mode (Literal['jagged', 'smooth'])

consider_points_equals_2d(p0, p1)[source]

确定两个点是否足够接近以被视为相等。

这使用了np.isclose()中的算法,但在此处扩展用于二维点的情况。对于这样一个小问题,NumPy是多余的。:param p0: 第一个点 :param p1: 第二个点

返回:

两个点是否被视为接近。

返回类型:

bool

参数:
property fill_color: ManimColor

如果存在多种颜色(用于渐变),则返回第一种颜色

force_direction(target_direction)[source]

确保点按顺时针或逆时针方向排列。

参数:

target_direction (Literal['CW', 'CCW']) – “CW”或“CCW”。

返回类型:

自身

gen_cubic_bezier_tuples_from_points(points)[source]

从点数组返回贝塞尔元组。

self.points是mobject贝塞尔曲线的锚点和控制点的列表(即[锚点1, 控制点1, 控制点2, 锚点2, 锚点3 ..])。此算法通过每n个元素(其中n是每条三次贝塞尔曲线的控制点数量)取一个元素来基本检索它们。

参数:

points (CubicBezierPathLike) – 将从中提取控制点的点。

返回:

贝塞尔控制点。

返回类型:

tuple

generate_rgbas_array(color, opacity)[source]

第一个参数可以是颜色,也可以是颜色元组/列表。同样,不透明度可以是浮点数,也可以是浮点数元组。如果self.sheen_factor不为零,且只传入一种颜色,则会自动添加第二种略浅的颜色以用于渐变。

参数:
返回类型:

RGBA_Array_Float

get_anchors()[source]

返回构成VMobject的曲线的锚点。

返回:

锚点。

返回类型:

Point3D_Array

get_anchors_and_handles()[source]

返回anchors1、handles1、handles2、anchors2,其中(anchors1[i], handles1[i], handles2[i], anchors2[i])将是定义三次贝塞尔曲线的四个点,适用于范围(0, len(anchors1))中的任何i。

返回:

锚点和控制点的可迭代对象。

返回类型:

list[Point3D_Array]

get_arc_length(sample_points_per_curve=None)[source]

返回整个曲线的近似长度。

参数:

sample_points_per_curve (int | None) – 每条曲线用于近似长度的采样点数量。点越多,近似越精确。

返回:

VMobject的长度。

返回类型:

浮点数

get_color()[source]

返回Mobject的颜色

示例

>>> from manim import Square, RED
>>> Square(color=RED).get_color() == RED
True
返回类型:

Manim颜色

get_curve_functions()[source]

获取mobject曲线的函数。

返回:

曲线的函数。

返回类型:

Iterable[Callable[[float], Point3D]]

get_curve_functions_with_lengths(**kwargs)[source]

获取mobject曲线的函数和长度。

参数:

**kwargs – 传递给get_nth_curve_function_with_length()的关键字参数

返回:

曲线的函数和长度。

返回类型:

Iterable[tuple[Callable[[float], Point3D], float]]

get_direction()[source]

使用shoelace_direction()计算方向。点的方向决定了对象是以顺时针还是逆时针方向绘制。

示例

圆形的默认方向是逆时针。

>>> from manim import Circle
>>> Circle().get_direction()
'CCW'
返回:

“CW”或“CCW”。

返回类型:

str

get_end_anchors()[source]

返回贝塞尔曲线的结束锚点。

返回:

起始锚点

返回类型:

Point3D_Array

get_fill_color()[source]

如果存在多种颜色(用于渐变),则返回第一种颜色

返回类型:

Manim颜色

get_fill_opacity()[source]

如果存在多个不透明度,则返回第一个

返回类型:

ManimFloat

static get_mobject_type_class()[source]

返回此 mobject 类型的基类。

返回类型:

type[VMobject]

get_nth_curve_function(n)[source]

返回第n条曲线的表达式。

参数:

n (int) – 所需曲线的索引。

返回:

第n条贝塞尔曲线的表达式。

返回类型:

Callable[float, Point3D]

get_nth_curve_function_with_length(n, sample_points=None)[source]

返回第n条曲线的表达式及其(近似)长度。

参数:
  • n (int) – 所需曲线的索引。

  • sample_points (int | None) – 用于查找长度的采样点数量。

返回:

  • curve (Callable[[float], Point3D]) – 第n条曲线的函数。

  • length (float) – 第n条曲线的长度。

返回类型:

tuple[Callable[[float], Point3D], float]

get_nth_curve_length(n, sample_points=None)[source]

返回第n条曲线的(近似)长度。

参数:
  • n (int) – 所需曲线的索引。

  • sample_points (int | None) – 用于查找长度的采样点数量。

返回:

length – 第n条曲线的长度。

返回类型:

浮点数

get_nth_curve_length_pieces(n, sample_points=None)[source]

返回用于长度近似的短线长度数组。

参数:
  • n (int) – 所需曲线的索引。

  • sample_points (int | None) – 用于查找长度的采样点数量。

返回类型:

第n条曲线的短长度片段。

get_nth_curve_points(n)[source]

返回定义vmobject第n条曲线的点。

参数:

n (int) – 所需贝塞尔曲线的索引。

返回:

定义第n条贝塞尔曲线的点(锚点、控制点)

返回类型:

CubicBezierPoints

get_num_curves()[source]

返回vmobject的曲线数量。

返回:

vmobject的曲线数量。

返回类型:

int

get_point_mobject(center=None)[source]

可转换为或从自身转换的最简单的Mobject。应为适当类型的点。

参数:

center (Point3DLike | None)

返回类型:

矢量化点

get_start_anchors()[source]

返回贝塞尔曲线的起始锚点。

返回:

起始锚点

返回类型:

Point3D_Array

get_subcurve(a, b)[source]

返回VMobject在区间[a, b]之间的子曲线。该曲线本身就是一个VMobject。

参数:
  • a (float) – 下界。

  • b (float) – 上界。

返回:

[a, b]之间的子曲线

返回类型:

VMobject

get_subpaths()[source]

返回由VMobject曲线形成的子路径。

子路径是曲线的范围,其中每对连续曲线的首尾点重合。

返回:

子路径。

返回类型:

list[CubicSpline]

init_colors(propagate_colors=True)[source]

初始化颜色。

在创建时调用。这是一个空方法,可由子类实现。

参数:

propagate_colors (bool)

返回类型:

自身

insert_n_curves(n)[source]

向vmobject的贝塞尔曲线插入n条曲线。

参数:

n (int) – 要插入的曲线数量。

返回:

自身

返回类型:

VMobject

insert_n_curves_to_point_list(n, points)[source]

给定一个定义贝塞尔曲线(锚点和手柄)的k个点数组,返回精确定义k + n条贝塞尔曲线的点。

参数:
  • n (int) – 所需曲线的数量。

  • points (BezierPathLike) – 起始点。

返回类型:

生成的点。

point_from_proportion(alpha)[source]

获取VMobject路径上按比例的点。

参数:

alpha (float) – VMobject路径上的比例。

返回:

VMobject上的点。

返回类型:

numpy.ndarray

抛出:
  • ValueError – 如果alpha不在0到1之间。

  • Exception – 如果VMobject没有点。

示例

示例:PointFromProportion

../_images/PointFromProportion-1.png
from manim import *

class PointFromProportion(Scene):
    def construct(self):
        line = Line(2*DL, 2*UR)
        self.add(line)
        colors = (RED, BLUE, YELLOW)
        proportions = (1/4, 1/2, 3/4)
        for color, proportion in zip(colors, proportions):
            self.add(Dot(color=color).move_to(
                    line.point_from_proportion(proportion)
            ))
class PointFromProportion(Scene):
    def construct(self):
        line = Line(2*DL, 2*UR)
        self.add(line)
        colors = (RED, BLUE, YELLOW)
        proportions = (1/4, 1/2, 3/4)
        for color, proportion in zip(colors, proportions):
            self.add(Dot(color=color).move_to(
                    line.point_from_proportion(proportion)
            ))

pointwise_become_partial(vmobject, a, b)[source]

给定第二个VMobject vmobject、下界a和上界b,修改此VMobject的点,使其与由vmobject.points描述的贝塞尔样条曲线在参数t介于ab之间的部分相匹配。

参数:
  • vmobject (VMobject) – 将作为模型的VMobject

  • a (float) – t的下界。

  • b (float) – t的上界

返回:

VMobject自身,在变换后。

返回类型:

VMobject

抛出:

TypeError – 如果vmobject不是VMobject的实例。

proportion_from_point(point)[source]

返回给定点在VMobject路径上的比例。

参数:

point (Point3DLike) – 点的笛卡尔坐标,该点可能在VMobject上,也可能不在。

返回:

VMobject路径上的比例。

返回类型:

浮点数

抛出:
  • ValueError – 如果point不在曲线上。

  • Exception – 如果VMobject没有点。

resize_points(new_length, resize_func=<function resize_array>)[source]

调整锚点和手柄数组的大小以达到指定大小。

参数:
  • new_length (int) – 新的(总)点数。

  • resize_func (Callable[[Point3D_Array, int], Point3D_Array]) – 一个将Numpy数组(点)和整数(目标大小)映射到Numpy数组的函数。默认实现基于Numpy的resize函数。

返回类型:

自身

reverse_direction()[source]

通过反转点顺序来反转点方向。

返回:

返回自身。

返回类型:

VMobject

示例

示例:ChangeOfDirection

from manim import *

class ChangeOfDirection(Scene):
    def construct(self):
        ccw = RegularPolygon(5)
        ccw.shift(LEFT)
        cw = RegularPolygon(5)
        cw.shift(RIGHT).reverse_direction()

        self.play(Create(ccw), Create(cw),
        run_time=4)
class ChangeOfDirection(Scene):
    def construct(self):
        ccw = RegularPolygon(5)
        ccw.shift(LEFT)
        cw = RegularPolygon(5)
        cw.shift(RIGHT).reverse_direction()

        self.play(Create(ccw), Create(cw),
        run_time=4)

rotate(angle, axis=array([0., 0., 1.]), about_point=None, **kwargs)[source]

围绕某个点旋转Mobject

参数:
返回类型:

自身

rotate_sheen_direction(angle, axis=array([0., 0., 1.]), family=True)[source]

旋转所施加光泽的方向。

参数:
  • angle (float) – 光泽方向旋转的角度。

  • axis (Vector3D) – 旋转轴。

  • 家族 (bool)

返回类型:

自身

示例

常规用法

Circle().set_sheen_direction(UP).rotate_sheen_direction(PI)

另请参阅

set_sheen_direction()

scale(scale_factor, scale_stroke=False, **kwargs)[source]

按比例因子缩放大小。

默认行为是围绕vmobject的中心进行缩放。

参数:
  • scale_factor (float) – 缩放因子\(\alpha\)。如果\(0 < |\alpha| < 1\),mobject将缩小;如果\(|\alpha| > 1\),它将增长。此外,如果\(\alpha < 0\),mobject也将翻转。

  • scale_stroke (bool) – 布尔值,确定对象缩放时其轮廓是否也缩放。如果启用,一个2像素轮廓的对象按0.5倍缩放后,其轮廓将变为1像素。

  • kwargs – 传递给scale()的额外关键字参数。

返回:

自身

返回类型:

VMobject

示例

示例: MobjectScaleExample

../_images/MobjectScaleExample-3.png
from manim import *

class MobjectScaleExample(Scene):
    def construct(self):
        c1 = Circle(1, RED).set_x(-1)
        c2 = Circle(1, GREEN).set_x(1)

        vg = VGroup(c1, c2)
        vg.set_stroke(width=50)
        self.add(vg)

        self.play(
            c1.animate.scale(.25),
            c2.animate.scale(.25,
                scale_stroke=True)
        )
class MobjectScaleExample(Scene):
    def construct(self):
        c1 = Circle(1, RED).set_x(-1)
        c2 = Circle(1, GREEN).set_x(1)

        vg = VGroup(c1, c2)
        vg.set_stroke(width=50)
        self.add(vg)

        self.play(
            c1.animate.scale(.25),
            c2.animate.scale(.25,
                scale_stroke=True)
        )

另请参阅

move_to()

scale_handle_to_anchor_distances(factor)[source]

如果给定控制点H及其相关锚点A之间的距离为d,则将H更改为距离A的factor*d,但A到H的连线不改变。这主要在应用(可微分)函数时有用,以保留切线属性。可以先将所有控制点拉近其锚点,应用函数后再将它们推回。

参数:

factor (float) – 用于缩放的因子。

返回:

自身

返回类型:

VMobject

set_anchors_and_handles(anchors1, handles1, handles2, anchors2)[source]

给定两组锚点和控制点,处理它们以将其设置为VMobject的锚点和控制点。

anchors1[i]、handles1[i]、handles2[i] 和 anchors2[i] 定义了 vmobject 的第 i 条贝塞尔曲线。这里有四个硬编码的参数,这是一个问题,因为它使得每条三次曲线的点数无法改变,始终为 4 个(两个锚点和两个手柄)。

返回:

自身

返回类型:

VMobject

参数:
set_cap_style(cap_style)[source]

设置VMobject的端点样式。

参数:

cap_style (CapStyleType) – 要设置的端点样式。有关选项,请参阅 CapStyleType

返回:

自身

返回类型:

VMobject

示例

示例:CapStyleExample

../_images/CapStyleExample-1.png
from manim import *

class CapStyleExample(Scene):
    def construct(self):
        line = Line(LEFT, RIGHT, color=YELLOW, stroke_width=20)
        line.set_cap_style(CapStyleType.ROUND)
        self.add(line)
class CapStyleExample(Scene):
    def construct(self):
        line = Line(LEFT, RIGHT, color=YELLOW, stroke_width=20)
        line.set_cap_style(CapStyleType.ROUND)
        self.add(line)

set_color(color, family=True)[source]

条件是一个函数,它接受一个参数 (x, y, z)。这里它只是递归地作用于子对象,但在子类中,这应该根据颜色的内部工作原理进一步实现。

参数:
返回类型:

自身

set_fill(color=None, opacity=None, family=True)[source]

设置VMobject的填充颜色和填充不透明度。

参数:
  • color (ParsableManimColor | None) – VMobject 的填充颜色。

  • opacity (float | None) – VMobject 的填充不透明度。

  • family (bool) – 如果为 True,所有子对象(submobjects)的填充颜色也会被设置。

返回:

自身

返回类型:

VMobject

示例

示例:SetFill

../_images/SetFill-1.png
from manim import *

class SetFill(Scene):
    def construct(self):
        square = Square().scale(2).set_fill(WHITE,1)
        circle1 = Circle().set_fill(GREEN,0.8)
        circle2 = Circle().set_fill(YELLOW) # No fill_opacity
        circle3 = Circle().set_fill(color = '#FF2135', opacity = 0.2)
        group = Group(circle1,circle2,circle3).arrange()
        self.add(square)
        self.add(group)
class SetFill(Scene):
    def construct(self):
        square = Square().scale(2).set_fill(WHITE,1)
        circle1 = Circle().set_fill(GREEN,0.8)
        circle2 = Circle().set_fill(YELLOW) # No fill_opacity
        circle3 = Circle().set_fill(color = '#FF2135', opacity = 0.2)
        group = Group(circle1,circle2,circle3).arrange()
        self.add(square)
        self.add(group)

另请参阅

set_style()

set_points_as_corners(points)[source]

给定一个点数组,将其设置为VMobject的角点。

为了实现这一点,该算法将手柄与锚点对齐,使得所得的贝塞尔曲线将成为两个锚点之间的线段。

参数:

points (Point3DLike_Array) – 将被设置为顶点的点数组。

返回:

VMobject 本身,在将新点设置为顶点之后。

返回类型:

VMobject

示例

示例:PointsAsCornersExample

../_images/PointsAsCornersExample-1.png
from manim import *

class PointsAsCornersExample(Scene):
    def construct(self):
        corners = (
            # create square
            UR, UL,
            DL, DR,
            UR,
            # create crosses
            DL, UL,
            DR
        )
        vmob = VMobject(stroke_color=RED)
        vmob.set_points_as_corners(corners).scale(2)
        self.add(vmob)
class PointsAsCornersExample(Scene):
    def construct(self):
        corners = (
            # create square
            UR, UL,
            DL, DR,
            UR,
            # create crosses
            DL, UL,
            DR
        )
        vmob = VMobject(stroke_color=RED)
        vmob.set_points_as_corners(corners).scale(2)
        self.add(vmob)

set_sheen(factor, direction=None, family=True)[source]

从一个方向应用颜色渐变。

参数:
  • factor (float) – 要应用的亮度/渐变程度。如果为负,渐变从黑色开始;如果为正,渐变从白色开始并变为当前颜色。

  • direction (Vector3D | None) – 应用渐变的方向。

  • 家族 (bool)

返回类型:

自身

示例

示例:SetSheen

../_images/SetSheen-1.png
from manim import *

class SetSheen(Scene):
    def construct(self):
        circle = Circle(fill_opacity=1).set_sheen(-0.3, DR)
        self.add(circle)
class SetSheen(Scene):
    def construct(self):
        circle = Circle(fill_opacity=1).set_sheen(-0.3, DR)
        self.add(circle)

set_sheen_direction(direction, family=True)[source]

设置所施加光泽的方向。

参数:
  • direction (Vector3D) – 应用渐变的方向。

  • 家族 (bool)

返回类型:

自身

示例

常规用法

Circle().set_sheen_direction(UP)
start_new_path(point)[source]

将一个 point 添加到 VMobject.points,它将作为给定点路径中新贝塞尔曲线的起点。如果在 VMobject.points 的末尾存在未完成的曲线,则通过根据需要多次添加最后一条贝塞尔曲线的起始锚点来完成它。

参数:

point (Point3DLike) – 要添加到 VMobject.points 的一个 3D 点。

返回:

VMobject 本身,在添加 point 并开始一条新曲线之后。

返回类型:

VMobject