路径¶
影片代码
import manimgx as m
class PathsHero(m.Scene):
def construct(self) -> None:
path = m.VMobject(color=m.YELLOW, stroke_width=6)
path.start_new_path([-5, -1, 0])
path.add_line_to([-3, 2, 0])
path.add_smooth_curve_to([0, 0, 0])
path.add_cubic_bezier_curve_to([1, 3, 0], [3, -3, 0], [5, 1, 0])
anchors = m.VGroup(
*[m.Dot(point, color=m.BLUE) for point in path.get_anchors()]
)
dot = m.Dot(color=m.RED).move_to(path.get_start())
self.play(m.Create(path), run_time=2)
self.play(m.FadeIn(anchors))
self.play(m.MoveAlongPath(dot, path), run_time=2)
self.wait()
形状即路径:由曲线组成,每条曲线从一个点到下一个点。曲线从锚点出发,弯向两个控制柄, 最终到达下一个锚点。描边沿曲线行进,填充则将路径的每个部分闭合回其起点。圆、多边形、 文本和图表都是路径,因此以下内容对它们同样适用。
要绘制自定义路径,创建一个空的 m.VMobject(),然后赋予其点:作为角点、作为穿过它们的
平滑曲线,或逐条添加线和曲线。
VMobject
¶
代码
import manimgx as m
class VMobjectExample(m.Scene):
def construct(self) -> None:
path = m.VMobject(color=m.BLUE, fill_opacity=0.5, stroke_width=8)
path.set_points_as_corners([[-3, -2, 0], [-3, 2, 0], [0, 2, 0]])
path.add_cubic_bezier_curve_to([3, 2, 0], [3, -2, 0], [0, -2, 0])
path.close_path()
self.play(m.Create(path, run_time=2))
一条路径:三次贝塞尔曲线,默认白色描边、无填充,除非设置样式。
每条曲线有四个控制点:从锚点出发,弯向两个手柄, 到达下一个锚点。路径的 points 是其 曲线的控制点,每四个一组,当某条曲线的起点不与前一条曲线的终点重合时 开始新的子路径。描边沿曲线行进;填充 用直线将每个子路径闭合回其起点,当子路径 重叠时,某点是否填充取决于它们绕该点的环绕数是否抵消:在另一个 子路径内部反向运行的子路径切出一个洞。
圆、多边形、文本和图都是路径。普通的 VMobject 在被赋予形状之前没有点:
将其点设为角点,或从某点开始并添加
直线和曲线。
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\mobject.py
绘制路径¶
set_points_as_corners
¶

代码
import manimgx as m
class VMobjectSetPointsAsCornersExample(m.Scene):
def construct(self) -> None:
zigzag = m.VMobject(color=m.YELLOW, stroke_width=8)
zigzag.set_points_as_corners(
[[-3, -1.5, 0], [-1.5, 1.5, 0], [0, -1.5, 0], [1.5, 1.5, 0]]
)
triangle = m.VMobject(color=m.BLUE, fill_opacity=0.5)
triangle.set_points_as_corners(
[[-2, -1.5, 0], [0, 2, 0], [2, -1.5, 0], [-2, -1.5, 0]]
)
self.add(m.VGroup(zigzag, triangle).arrange(buff=2))
给路径新点,替换其自身的点:依次经过 给定点的直线。
路径是开放的:要闭合它,以第一个点再次结束。
points角点,场景坐标,按顺序。
源码
manimgx\mobject.py
set_points_smoothly
¶
代码
import manimgx as m
class VMobjectSetPointsSmoothlyExample(m.Scene):
def construct(self) -> None:
points = [[-5, -1, 0], [-3, 2, 0], [-1, -2, 0], [1, 2, 0]]
points += [[3, -1, 0], [5, 1, 0]]
corners = m.VMobject(color=m.GREY).set_points_as_corners(points)
curve = m.VMobject(color=m.YELLOW, stroke_width=8)
curve.set_points_smoothly(points)
self.add(corners, *(m.Dot(p, radius=0.12) for p in points))
self.play(m.Create(curve, run_time=2))
给路径新点,替换其自身的点:依次经过 给定点的平滑曲线。
曲线经过每个点,在该处平滑弯曲,曲率无 突变(三次样条);若最后一个点为第一个点,则平滑闭合。
points曲线经过的点,场景坐标,按顺序。
源码
manimgx\mobject.py
start_new_path
¶
在某点开始新的子路径:下一条添加的曲线从该点开始,而非 路径终点。
未完成的曲线(已开始但尚未添加曲线的子路径)以 其第一个点的副本补全,作为零长度曲线。若在路径终点处开始, 子路径直接延续。
point新子路径的起点,场景坐标。
源码
manimgx\mobject.py
add_line_to
¶
代码
import manimgx as m
class VMobjectAddLineToExample(m.Scene):
def construct(self) -> None:
stairs = m.VMobject(color=m.BLUE, stroke_width=8)
stairs.start_new_path([-5, -3, 0])
for _ in range(5):
stairs.add_line_to(stairs.get_end() + 1.2 * m.UP)
stairs.add_line_to(stairs.get_end() + 2 * m.RIGHT)
self.play(m.Create(stairs, run_time=3))
从路径终点到某点添加直线。
路径必须有一个点作为起点。
point直线终点,场景坐标。
源码
manimgx\mobject.py
add_points_as_corners
¶
从路径终点依次经过每个点添加直线。
路径必须有一个点作为起点。
points角点,场景坐标,按顺序:路径随后在 最后一个点处结束。
源码
manimgx\mobject.py
add_smooth_curve_to
¶
代码
import manimgx as m
class VMobjectAddSmoothCurveToExample(m.Scene):
def construct(self) -> None:
wave = m.VMobject(color=m.YELLOW, stroke_width=8)
wave.start_new_path([-6, 0, 0])
wave.add_cubic_bezier_curve_to([-6, 2, 0], [-4, 2, 0], [-4, 0, 0])
for x in (-2, 0, 2, 4, 6):
wave.add_smooth_curve_to([x, 0, 0])
self.play(m.Create(wave, run_time=3))
添加平滑延续路径的曲线:它从路径终点沿 路径到达该处的方向离开。
其第一个手柄是路径最后一个手柄关于路径终点的镜像。 仅给出锚点时,曲线以其离开方式的镜像到达该处 (关于其两端连线的垂直平分线镜像);先给出第二个手柄时, 曲线背离该手柄到达。若无曲线可延续,在 start_new_path 之后, 为到锚点的直线。
*points曲线终点的锚点,或先第二个手柄再 锚点,场景坐标。
源码
manimgx\mobject.py
add_cubic_bezier_curve_to
¶
代码
import manimgx as m
class VMobjectAddCubicBezierCurveToExample(m.Scene):
def construct(self) -> None:
start, h1, h2, end = [-4, -2, 0], [-2, 3, 0], [2, 3, 0], [4, -2, 0]
path = m.VMobject(color=m.YELLOW, stroke_width=8)
path.start_new_path(start).add_cubic_bezier_curve_to(h1, h2, end)
handles = m.VGroup(m.Line(start, h1), m.Line(h2, end))
dots = [m.Dot(p, radius=0.12) for p in (start, h1, h2, end)]
self.add(handles.set_color(m.GREY), *dots)
self.play(m.Create(path, run_time=2))
从路径终点到 anchor 添加曲线,弯向两个手柄。
曲线从路径最后一个点朝向 handle1 离开,到达
anchor 时背离 handle2。路径必须有一个点作为起点。
handle1第一个手柄,场景坐标。
handle2第二个手柄。
anchor曲线终点。
源码
manimgx\mobject.py
add_quadratic_bezier_curve_to
¶
代码
import manimgx as m
class VMobjectAddQuadraticBezierCurveToExample(m.Scene):
def construct(self) -> None:
start, handle, end = [-4, -2, 0], [0, 3, 0], [4, -2, 0]
path = m.VMobject(color=m.TEAL, stroke_width=8)
path.start_new_path(start)
path.add_quadratic_bezier_curve_to(handle, end)
handles = m.VGroup(m.Line(start, handle), m.Line(handle, end))
dots = [m.Dot(p, radius=0.12) for p in (start, handle, end)]
self.add(handles.set_color(m.GREY), *dots)
self.play(m.Create(path, run_time=2))
从路径终点到 anchor 添加二次贝塞尔曲线,弯向
一个手柄。
它作为同形状的三次曲线添加。路径必须有一个点作为起点。
handle手柄,场景坐标:曲线从路径最后 一个点朝向它离开,到达
anchor时背离它。anchor曲线终点。
源码
manimgx\mobject.py
add_cubic_bezier_curve
¶
添加从 anchor1 到 anchor2 的曲线,弯向两个手柄:新的
子路径,除非 anchor1 是路径终点。
其四个点按原样追加,因此路径的曲线必须全部 完整:在 start_new_path 之后,使用 add_cubic_bezier_curve_to。
anchor1曲线起点,场景坐标。
handle1离开
anchor1时所朝向的手柄。handle2到达
anchor2时所背离的手柄。anchor2曲线终点。
源码
manimgx\mobject.py
add_cubic_bezier_curves
¶
在路径自身的曲线之后添加曲线,由控制点给出,每条曲线四个: 锚点、手柄、手柄、锚点。
curves曲线的控制点,场景坐标:(n, 4, 3) 数组,或依次排列的点。
add_subpath
¶
在路径自身的曲线之后添加曲线,由控制点给出,每条曲线四个: 新的子路径,除非它们从路径终点开始。
points曲线的控制点,场景坐标。
append_vectorized_mobject
¶
在此路径自身的曲线之后添加另一路径的曲线:其点,而非其 子 mobject。
刚开始但尚未添加曲线的子路径(参见 start_new_path)被丢弃。
vmobject要添加其点的路径。
源码
manimgx\mobject.py
close_path
¶

代码
import manimgx as m
class VMobjectClosePathExample(m.Scene):
def construct(self) -> None:
corners = [[-2, -1.5, 0], [0, 1.5, 0], [2, -1.5, 0]]
style = {"fill_opacity": 0.5, "stroke_width": 8}
open_path = m.VMobject(color=m.GREEN, **style)
closed_path = m.VMobject(color=m.YELLOW, **style)
open_path.set_points_as_corners(corners)
closed_path.set_points_as_corners(corners).close_path()
self.add(m.VGroup(open_path, closed_path).arrange(buff=2))
闭合路径:从路径终点到其最后一个子路径起点添加直线, 除非路径已在起点处结束。
填充无论如何都会闭合每个子路径;闭合子路径使其描边 完整绕行一圈。
源码
manimgx\mobject.py
is_closed
¶
平滑或锐利¶
make_smooth
¶
使家族中每个子路径成为经过其锚点的平滑曲线,在任何锚点处 曲率无突变(三次样条);闭合的子路径平滑闭合。
锚点保持不变,手柄移动:多边形变为经过其 角点的圆滑环线。
源码
manimgx\mobject.py
make_jagged
¶
insert_n_curves
¶
将路径的曲线分成更多曲线,形状不变。
每条曲线按参数等分,新曲线尽可能均匀地分布在各曲线之间 (m 条中的第 i 条获得 n 条中的第 j 条新曲线,满足 j·m // n = i): 这是变换使两条路径拥有相同曲线数的方式。
n要添加多少条曲线。
源码
manimgx\mobject.py
沿路径¶
get_start
¶
mobject 的第一个点:路径的起点。
如果 mobject 没有自身的点,则抛出异常。
返回 该点,以场景坐标表示。
get_end
¶
mobject 的最后一个点:路径的终点。
如果 mobject 没有自身的点,则抛出异常。
返回 该点,以场景坐标表示。
get_midpoint
¶
point_from_proportion
¶

代码
import manimgx as m
class VMobjectPointFromProportionExample(m.Scene):
def construct(self) -> None:
points = [[-5, -2, 0], [-2, 2, 0], [1, -1, 0], [5, 2, 0]]
curve = m.VMobject(color=m.BLUE, stroke_width=6)
curve.set_points_smoothly(points)
self.add(curve)
for alpha in (0, 0.25, 0.5, 0.75, 1):
point = curve.point_from_proportion(alpha)
dot = m.Dot(point, radius=0.15, color=m.YELLOW)
label = m.Text(str(alpha), font_size=32).next_to(dot, m.DOWN)
self.add(dot, label)
沿路径按长度比例处的点:0 为起点, 1 为终点。
长度是路径自身的度量,即揭示动画所依据的度量(每条曲线九个直线
段),因此它是 Create 在该比例处
已绘制到的位置,MoveAlongPath 以匀速
移动。若 alpha 在 [0, 1] 之外或路径无点则抛出异常。
alpha比例,从 0 到 1。
返回 该点,场景坐标。
源码
manimgx\mobject.py
proportion_from_point
¶
路径上某点沿路径的位置,按长度计算: point_from_proportion 的逆。
以点所在的第一条曲线为准。若点不在路径上则抛出异常。
point该点,场景坐标。
tolerance点离路径多近才算在上面:沿每个轴在 此值的 100 倍以内,场景单位。
返回 比例,从 0(路径起点)到 1(路径终点)。
源码
manimgx\mobject.py
get_arc_length
¶
路径的长度:各曲线长度之和,每条沿其上点间 直线段测量。
sample_points_per_curve每条曲线经过多少个点测量,包含 端点;None 为 10,即路径自身的度量。
返回 长度,场景单位。
源码
manimgx\mobject.py
get_subcurve
¶
路径的副本,截取从比例 a 到比例 b 的部分。
比例按路径的曲线计算,每条曲线等份额不论其 长度,沿每条曲线按其参数 (point_from_proportion 按长度 计算)。副本的子 mobject 整体复制。
a部分起点,从 0 到 1。
b部分终点,从
a到 1。
返回 新路径。
源码
manimgx\mobject.py
走向¶
get_direction
¶
路径的转向:"CW"(顺时针)或 "CCW"(逆时针),由 其曲线起始锚点所围面积的符号决定。
返回 "CW" 或 "CCW"。
reverse_direction
¶

代码
import manimgx as m
class VMobjectReverseDirectionExample(m.Scene):
def construct(self) -> None:
outer, inner = m.Square(side_length=4), m.Square(side_length=2)
same = m.VMobject(color=m.BLUE, fill_opacity=0.8)
same.append_vectorized_mobject(outer)
same.append_vectorized_mobject(inner)
opposite = m.VMobject(color=m.YELLOW, fill_opacity=0.8)
opposite.append_vectorized_mobject(outer)
opposite.append_vectorized_mobject(inner.reverse_direction())
self.add(m.VGroup(same, opposite).arrange(buff=2))
反转路径自身点的顺序,使其反向运行:从 终点到起点。
其子 mobject 保持不变。绘制动画随后以另一方向绘制它, 在另一个子路径内部的子路径仅当两者反向运行时才在填充中 切出一个洞。
源码
manimgx\mobject.py
force_direction
¶
使路径顺时针或逆时针运行:若方向相反则反转 (参见 get_direction)。
target_direction"CW" 为顺时针,"CCW" 为逆时针。
源码
manimgx\mobject.py
其点¶
points
¶
mobject 自身的点,以场景坐标表示:一个 (n, 3) 数组,只读。
路径的点是其三次贝塞尔曲线的控制点,每条曲线四个。 赋值一个数组可重塑 mobject;其子 mobject 保持各自的点。赋值它已有的点不会改变 任何东西(它保持其几何形状及从其导出的所有内容),除非它们是形状的混合(如变形 中间态),此时会合为一体;在其后追加更多点会使它增长。
源码
manimgx\mobject.py
set_points
¶
为 mobject 赋予新的自身点,替换其现有点。
points这些点,以场景坐标表示:一个 (n, 3) 数组。
reset_points
¶
has_points
¶
append_points
¶
在路径自身的点之后添加控制点:每四个一组,路径的 点即其曲线。
new_points点,场景坐标:(n, 3) 数组。
源码
manimgx\mobject.py
get_anchors
¶
路径的锚点,逐条曲线:每条曲线的起点,然后终点,因此 两条曲线共享的锚点列出两次。
返回 点数组,场景坐标;对于只有一个点的路径,为该 点。
源码
manimgx\mobject.py
get_subpaths
¶
路径的子路径:当某条曲线的起点不与前一条曲线的终点 重合时开始新的子路径。
返回 子路径,每个为其控制点数组,每条曲线四个。
get_num_curves
¶
bezier
¶
作为函数的三次贝塞尔曲线:从 0 处的第一个控制点到 1 处的最后一个。
points其四个控制点:锚点、手柄、手柄、锚点。
返回 以曲线参数(从 0 到 1)为自变量的函数,给出该处的点。
源码
manimgx\drawing\geometry.py
由路径构成的路径¶
CubicBezier
¶
代码
import manimgx as m
class CubicBezierExample(m.Scene):
def construct(self) -> None:
start, end = [-5, -2, 0], [5, -2, 0]
handle1, handle2 = [-3, 3, 0], [6, 3, 0]
curve = m.CubicBezier(start, handle1, handle2, end, color=m.YELLOW)
levers = m.VGroup(m.Line(start, handle1), m.Line(end, handle2))
levers.set_stroke(m.GREY, width=2)
anchors = m.VGroup(m.Dot(start), m.Dot(end)).set_color(m.BLUE)
handles = m.VGroup(m.Dot(handle1), m.Dot(handle2)).set_color(m.RED)
self.add(levers, anchors, handles)
self.play(m.Create(curve, run_time=2))
三次贝塞尔曲线:从一个锚点到另一个,被两个控制柄拉向; 未加样式时为白色。
曲线离开起点时朝向 start_handle,进入终点时来自 end_handle 方向;
控制柄越远,曲线沿其方向走得越长。曲线不经过任一控制柄。
start_anchor曲线起点。
start_handle起点的控制柄。
end_handle终点的控制柄。
end_anchor曲线终点。
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\shapes.py
DashedVMobject
¶
代码
import manimgx as m
class DashedVMobjectExample(m.Scene):
def construct(self) -> None:
circle = m.Circle(radius=1.5, color=m.BLUE, stroke_width=6)
square = m.Square(side_length=3, color=m.GREEN, stroke_width=6)
arc = m.Arc(radius=2, angle=m.PI, color=m.YELLOW, stroke_width=6)
shapes = m.VGroup(
m.DashedVMobject(circle, num_dashes=12),
m.DashedVMobject(square, num_dashes=16, dashed_ratio=0.7),
m.DashedVMobject(arc, num_dashes=7, dashed_ratio=0.3),
).arrange(buff=1)
self.play(m.Create(shapes, run_time=2))
以虚线绘制的路径:沿另一路径均匀分布的虚线,取其样式。
开放路径以虚线开始和结束;闭合路径有与虚线等多的间隙,环绕整圈。每条虚线
按路径的 cap_style 结束,箭头的尖端完整绘制。
vmobject要以虚线绘制的路径。
num_dashes虚线数;0 不绘制。
dashed_ratio虚线覆盖路径的比例,从 0 到 1;其余为间隙。
dash_offset虚线沿路径向终点移动多远,以一条虚线及其后间隙的分数计。
equal_lengths虚线是否等长;若为 False 则为路径参数的等长段, 路径运行更快处更长。
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\shapes.py
2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 | |
CurvesAsSubmobjects
¶
代码
import numpy as np
import manimgx as m
class CurvesAsSubmobjectsExample(m.Scene):
def construct(self) -> None:
curve = m.ParametricFunction(
lambda t: [2 * t, 2 * np.sin(t), 0], t_range=(-3, 3, 0.1)
)
parts = m.CurvesAsSubmobjects(curve.set_stroke(width=12))
parts.set_color_by_gradient(m.BLUE, m.YELLOW, m.RED)
self.play(m.Create(parts, run_time=2))
将路径拆分为其曲线的组:每条曲线一个路径,各以路径的样式样式化。
每部分可独立样式化或动画化:跨部分的渐变沿路径长度为其上色。仅取路径自身的 曲线,而非其子对象的。
vmobject要拆分的路径。
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\shapes.py
VectorizedPoint
¶
一个点的路径:不可见,用作放置物体的位置或生长的起点。
它是黑色的,无描边无填充。其宽度和高度是自身的数值, 不是从其点测量的。
m.VectorizedPoint(location=ORIGIN, artificial_width=0.01, artificial_height=0.01, **kwargs)
location点的位置,场景坐标。
artificial_width它报告的宽度,场景单位。
artificial_height它报告的高度,场景单位。
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\mobject.py