点云¶
影片代码
import manimgx as m
import numpy as np
class PointCloudsHero(m.Scene):
def construct(self) -> None:
rng = np.random.default_rng(3)
angles = rng.uniform(0, 2 * np.pi, 2000)
radii = 3 * np.sqrt(rng.uniform(0, 1, 2000))
points = np.stack(
[radii * np.cos(angles), radii * np.sin(angles), np.zeros(2000)], axis=1
)
rgbas = np.array(
[m.interpolate_color(m.BLUE, m.YELLOW, r / 3).to_rgba() for r in radii]
)
cloud = m.PMobject(stroke_width=6).add_points(points, rgbas)
self.play(m.FadeIn(cloud))
self.play(m.Rotate(cloud, m.PI / 2), run_time=2)
self.wait()
点云是以点绘制的 mobject:每个点都是一个具有自身颜色的圆点,宽度等于点云的 描边宽度。点云适合表示数量多且体积小的事物:尘埃、星辰、样本。
PMobject
¶

代码
import numpy as np
import manimgx as m
class PMobjectExample(m.Scene):
def construct(self) -> None:
t = np.linspace(0, 1, 300)
spiral = np.column_stack(
[3.5 * t * np.cos(20 * t), 3.5 * t * np.sin(20 * t), 0 * t]
)
colors = m.color_gradient([m.BLUE, m.GREEN, m.YELLOW], len(t))
rgbas = np.array([color.to_rgba() for color in colors])
cloud = m.PMobject(stroke_width=15).add_points(spiral, rgbas=rgbas)
self.add(cloud)
点云:以点形式绘制的 mobject,每个点为自身颜色的圆点。
点通过 add_points 添加,每个带颜色;
样式方法为所有点着色。每个点是宽度为其 stroke_width 描边宽度的圆盘,
每单位宽度为百分之一场景单位:在默认
宽度 4 下,约 720p 帧的 4 像素。
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
add_points
¶
在点云自身的点之后添加点,附带其颜色。
points点,场景坐标:(n, 3) 数组。
rgbas颜色,每个点一行红、绿、蓝和不透明度(从 0 到 1); None 则全部使用
color。color当
rgbas为 None 时的颜色;None 为点云的颜色(其color样式关键字,默认白色)。alpha当
rgbas为 None 时的不透明度,从 0 到 1。
源码
manimgx\mobject.py
thin_out
¶
保留家族中每个点云每 factor 个点中的一个,从第一个开始。
factor每这么多个点保留一个;必须为正。
源码
manimgx\mobject.py
PointCloudDot
¶

点圆盘:围绕圆心的点环,未加样式时为纯黄色。
各环相距 1/density 场景单位,从距圆心那么远到刚好在 radius 内,每环上的点
间距约相等。其点很小:stroke_width 为 2。
m.PointCloudDot(center=ORIGIN, radius=2.0, *, density=DEFAULT_POINT_DENSITY_1D, **kwargs)
center其圆心位置,以场景坐标表示。
radius其点达到多远,以场景单位计。
density每场景单位多少环及每环多少点。
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