typing

Manim 中使用的自定义类型定义。

开发者注意事项

在源代码中,有多个字符串如下所示:

'''
[CATEGORY]
<category_name>
'''

所有在这些字符串下定义的类型别名都将自动归入该类别。

如果需要定义新类别,请遵循上述格式。

类型别名

基本数据类型

class ManimFloat
np.float64

根据 IEEE 754 标准,一个双精度浮点值(64 位,即 8 字节)。

class ManimInt
np.int64

一个长整数(64 位,即 8 字节)。

它可以取值在 \(-2^{63}\)\(+2^{63} - 1\) 之间,用十进制表示的范围大约在 \(-9.223 \cdot 10^{18}\)\(+9.223 \cdot 10^{18}\) 之间。

颜色类型

class ManimColorDType
ManimFloat

ManimColorInternal 中使用的数据类型:介于 0 和 1 之间的双精度浮点数。

class RGB_Array_Float
NDArray[ManimColorDType]

形状: (3,)

一个包含 3 个介于 0 和 1 之间浮点数的 numpy.ndarray,表示 RGB 格式的颜色。

其分量依次描述了所表示颜色中红色、绿色和蓝色的强度。

class RGB_Tuple_Float
tuple[float, float, float]

形状: (3,)

一个包含 3 个介于 0 和 1 之间浮点数的元组,表示 RGB 格式的颜色。

其分量依次描述了所表示颜色中红色、绿色和蓝色的强度。

class RGB_Array_Int
NDArray[ManimInt]

形状: (3,)

一个包含 3 个介于 0 和 255 之间整数的 numpy.ndarray,表示 RGB 格式的颜色。

其分量依次描述了所表示颜色中红色、绿色和蓝色的强度。

class RGB_Tuple_Int
tuple[int, int, int]

形状: (3,)

一个包含 3 个介于 0 和 255 之间整数的元组,表示 RGB 格式的颜色。

其分量依次描述了所表示颜色中红色、绿色和蓝色的强度。

class RGBA_Array_Float
NDArray[ManimColorDType]

形状: (4,)

一个包含 4 个介于 0 和 1 之间浮点数的 numpy.ndarray,表示 RGBA 格式的颜色。

其分量依次描述了所表示颜色中红色、绿色、蓝色和 Alpha(不透明度)的强度。

class RGBA_Tuple_Float
tuple[float, float, float, float]

形状: (4,)

一个包含 4 个介于 0 和 1 之间浮点数的元组,表示 RGBA 格式的颜色。

其分量依次描述了所表示颜色中红色、绿色、蓝色和 Alpha(不透明度)的强度。

class RGBA_Array_Int
NDArray[ManimInt]

形状: (4,)

一个包含 4 个介于 0 和 255 之间整数的 numpy.ndarray,表示 RGBA 格式的颜色。

其分量依次描述了所表示颜色中红色、绿色、蓝色和 Alpha(不透明度)的强度。

class RGBA_Tuple_Int
tuple[int, int, int, int]

形状: (4,)

一个包含 4 个介于 0 和 255 之间整数的元组,表示 RGBA 格式的颜色。

其分量依次描述了所表示颜色中红色、绿色、蓝色和 Alpha(不透明度)的强度。

class HSV_Array_Float
RGB_Array_Float

形状: (3,)

一个包含 3 个介于 0 和 1 之间浮点数的 numpy.ndarray,表示 HSV(或 HSB)格式的颜色。

其分量依次描述了所表示颜色中的色相 (Hue)、饱和度 (Saturation) 和明度 (Value)(或亮度 (Brightness))。

class HSV_Tuple_Float
RGB_Tuple_Float

形状: (3,)

一个包含 3 个介于 0 和 1 之间浮点数的元组,表示 HSV(或 HSB)格式的颜色。

其分量依次描述了所表示颜色中的色相 (Hue)、饱和度 (Saturation) 和明度 (Value)(或亮度 (Brightness))。

class HSVA_Array_Float
RGBA_Array_Float

形状: (4,)

一个包含 4 个介于 0 和 1 之间浮点数的 numpy.ndarray,表示 HSVA(或 HSBA)格式的颜色。

其分量依次描述了所表示颜色中的色相 (Hue)、饱和度 (Saturation) 和明度 (Value)(或亮度 (Brightness))。

class HSVA_Tuple_Float
RGBA_Tuple_Float

形状: (4,)

一个包含 4 个介于 0 和 1 之间浮点数的元组,表示 HSVA(或 HSBA)格式的颜色。

其分量依次描述了所表示颜色中的色相 (Hue)、饱和度 (Saturation) 和明度 (Value)(或亮度 (Brightness))。

class HSL_Array_Float
RGB_Array_Float

形状: (3,)

一个包含 3 个介于 0 和 1 之间浮点数的 numpy.ndarray,表示 HSL 格式的颜色。

其分量依次描述了所表示颜色中的色相 (Hue)、饱和度 (Saturation) 和亮度 (Lightness)。

class HSL_Tuple_Float
RGB_Tuple_Float

形状: (3,)

一个包含 3 个介于 0 和 1 之间浮点数的 numpy.ndarray,表示 HSL 格式的颜色。

其分量依次描述了所表示颜色中的色相 (Hue)、饱和度 (Saturation) 和亮度 (Lightness)。

class ManimColorInternal
RGBA_Array_Float

形状: (4,)

ManimColor 使用的内部颜色表示,遵循 RGBA 格式。

它是一个 numpy.ndarray,由 4 个介于 0 和 1 之间的浮点数组成,分别描述了所表示颜色中红色、绿色、蓝色和 Alpha(不透明度)的强度。

点类型

class PointDType
ManimFloat

表示点的数组的默认类型:一个双精度浮点值。

class Point2D
NDArray[PointDType]

形状: (2,)

一个表示 2 维点的 NumPy 数组:[float, float]

class Point2DLike
Point2D | tuple[float, float]

形状: (2,)

一个 2 维点:[float, float]

这表示任何可以转换为 Point2D NumPy 数组的对象。

通常,需要 Point2D 作为参数的函数或方法可以处理传入 Point3D 的情况。

class Point2D_Array
NDArray[PointDType]

形状: (M, 2)

一个表示 Point2D 对象序列的 NumPy 数组:[[float, float], ...]

class Point2DLike_Array
Point2D_Array | Sequence[Point2DLike]

形状: (M, 2)

一个 Point2DLike 对象的数组:[[float, float], ...]

这表示任何可以转换为 Point2D_Array NumPy 数组的对象。

通常,需要 Point2D_Array 作为参数的函数或方法可以处理传入 Point3D_Array 的情况。

请参阅您正在使用的函数的文档以获取更多类型信息。

class Point3D
NDArray[PointDType]

形状: (3,)

一个表示 3 维点的 NumPy 数组:[float, float, float]

class Point3DLike
Point3D | tuple[float, float, float]

形状: (3,)

一个 3 维点:[float, float, float]

这表示任何可以转换为 Point3D NumPy 数组的对象。

class Point3D_Array
NDArray[PointDType]

形状: (M, 3)

一个表示 Point3D 对象序列的 NumPy 数组:[[float, float, float], ...]

class Point3DLike_Array
Point3D_Array | Sequence[Point3DLike]

形状: (M, 3)

一个 Point3D 对象的数组:[[float, float, float], ...]

这表示任何可以转换为 Point3D_Array NumPy 数组的对象。

请参阅您正在使用的函数的文档以获取更多类型信息。

class PointND
NDArray[PointDType]

形状: (N,)

一个表示 N 维点的 NumPy 数组:[float, ...]

class PointNDLike
PointND | Sequence[float]

形状: (N,)

一个 N 维点:[float, ...]

这表示任何可以转换为 PointND NumPy 数组的对象。

class PointND_Array
NDArray[PointDType]

形状: (M, N)

一个表示 PointND 对象序列的 NumPy 数组:[[float, ...], ...]

class PointNDLike_Array
PointND_Array | Sequence[PointNDLike]

形状: (M, N)

一个 PointND 对象的数组:[[float, ...], ...]

这表示任何可以转换为 PointND_Array NumPy 数组的对象。

请参阅您正在使用的函数的文档以获取更多类型信息。

向量类型

class Vector2D
NDArray[PointDType]

形状: (2,)

一个 2 维向量:[float, float]

通常,需要 Vector2D 作为参数的函数或方法可以处理传入 Vector3D 的情况。

注意

请勿与 VectorArrow VM对象混淆!

class Vector2D_Array
NDArray[PointDType]

形状: (M, 2)

一个 Vector2D 对象的数组:[[float, float], ...]

通常,需要 Vector2D_Array 作为参数的函数或方法可以处理传入 Vector3D_Array 的情况。

class Vector3D
NDArray[PointDType]

形状: (3,)

一个 3 维向量:[float, float, float]

注意

请勿与 VectorArrow3D VM对象混淆!

class Vector3D_Array
NDArray[PointDType]

形状: (M, 3)

一个 Vector3D 对象的数组:[[float, float, float], ...]

class VectorND
NDArray[PointDType]

形状 (N,)

一个 \(N\) 维向量:[float, ...]

注意

请勿与 Vector VM对象混淆!此类型别名被命名为“VectorND”而不是“Vector”以避免潜在的名称冲突。

class VectorND_Array
NDArray[PointDType]

形状 (M, N)

一个 VectorND 对象的数组:[[float, ...], ...]

class RowVector
NDArray[PointDType]

形状: (1, N)

一个行向量:[[float, ...]]

class ColVector
NDArray[PointDType]

形状: (N, 1)

一个列向量:[[float], [float], ...]

矩阵类型

class MatrixMN
NDArray[PointDType]

形状: (M, N)

一个矩阵:[[float, ...], [float, ...], ...]

class Zeros
MatrixMN

形状: (M, N)

一个填充了零的 MatrixMN,通常用 numpy.zeros((M, N)) 创建。

贝塞尔类型

class QuadraticBezierPoints
Point3D_Array

形状: (3, 3)

一个由三个 3D 控制点组成的 Point3D_Array,用于单个二次贝塞尔曲线:[[float, float, float], [float, float, float], [float, float, float]]

class QuadraticBezierPointsLike
QuadraticBezierPoints | tuple[Point3DLike, Point3DLike, Point3DLike]

形状: (3, 3)

一个由三个 3D 控制点组成的 Point3DLike_Array,用于单个二次贝塞尔曲线:[[float, float, float], [float, float, float], [float, float, float]]

这表示任何可以转换为 QuadraticBezierPoints NumPy 数组的对象。

class QuadraticBezierPoints_Array
NDArray[PointDType]

形状: (N, 3, 3)

一个包含 \(N\)QuadraticBezierPoints 对象的 NumPy 数组:[[[float, float, float], [float, float, float], [float, float, float]], ...]

class QuadraticBezierPointsLike_Array
QuadraticBezierPoints_Array | Sequence[QuadraticBezierPointsLike]

形状: (N, 3, 3)

一个包含 \(N\)QuadraticBezierPointsLike 对象的序列:[[[float, float, float], [float, float, float], [float, float, float]], ...]

这表示任何可以转换为 QuadraticBezierPoints_Array NumPy 数组的对象。

class QuadraticBezierPath
Point3D_Array

形状: (3*N, 3)

一个包含 \(3N\) 个点的 Point3D_Array,其中连续的 \(N\) 个 3 点块的每个块都表示一个二次贝塞尔曲线:[[float, float, float], ...], ...]

请参阅您正在使用的函数的文档以获取更多类型信息。

class QuadraticBezierPathLike
Point3DLike_Array

形状: (3*N, 3)

一个包含 \(3N\) 个点的 Point3DLike_Array,其中连续的 \(N\) 个 3 点块的每个块都表示一个二次贝塞尔曲线:[[float, float, float], ...], ...]

这表示任何可以转换为 QuadraticBezierPath NumPy 数组的对象。

请参阅您正在使用的函数的文档以获取更多类型信息。

class QuadraticSpline
QuadraticBezierPath

形状: (3*N, 3)

QuadraticBezierPath 的一个特例,其中所有 \(N\) 条二次贝塞尔曲线相互连接,形成一个二次样条:[[float, float, float], ...], ...]

请参阅您正在使用的函数的文档以获取更多类型信息。

class QuadraticSplineLike
QuadraticBezierPathLike

形状: (3*N, 3)

QuadraticBezierPathLike 的一个特例,其中所有 \(N\) 条二次贝塞尔曲线相互连接,形成一个二次样条:[[float, float, float], ...], ...]

这表示任何可以转换为 :class:QuadraticSpline NumPy 数组的对象。

请参阅您正在使用的函数的文档以获取更多类型信息。

class CubicBezierPoints
Point3D_Array

shape: (4, 3)

一个 Point3D_Array,包含单个三次贝塞尔曲线的四个三维控制点:[[float, float, float], [float, float, float], [float, float, float], [float, float, float]]

class CubicBezierPointsLike
CubicBezierPoints | tuple[Point3DLike, Point3DLike, Point3DLike, Point3DLike]

shape: (4, 3)

一个 Point3DLike_Array,包含单个三次贝塞尔曲线的4个控制点:[[float, float, float], [float, float, float], [float, float, float], [float, float, float]]

这表示任何可以转换为 :class:CubicBezierPoints NumPy 数组的对象。

class CubicBezierPoints_Array
NDArray[PointDType]

shape: (N, 4, 3)

一个 NumPy 数组,包含 \(N\)CubicBezierPoints 对象:[[[float, float, float], [float, float, float], [float, float, float], [float, float, float]], ...]

class CubicBezierPointsLike_Array
CubicBezierPoints_Array | Sequence[CubicBezierPointsLike]

shape: (N, 4, 3)

一个包含 \(N\)CubicBezierPointsLike 对象的序列:[[[float, float, float], [float, float, float], [float, float, float], [float, float, float]], ...]

这表示任何可以转换为 :class:CubicBezierPoints_Array NumPy 数组的对象。

class CubicBezierPath
Point3D_Array

shape: (4*N, 3)

一个 Point3D_Array,包含 \(4N\) 个点,其中 \(N\) 个连续的4点块中的每一个都表示一条三次贝塞尔曲线:[[float, float, float], ...], ...]

请参阅您正在使用的函数的文档以获取更多类型信息。

class CubicBezierPathLike
Point3DLike_Array

shape: (4*N, 3)

一个 Point3DLike_Array,包含 \(4N\) 个点,其中 \(N\) 个连续的4点块中的每一个都表示一条三次贝塞尔曲线:[[float, float, float], ...], ...]

这表示任何可以转换为 :class:CubicBezierPath NumPy 数组的对象。

请参阅您正在使用的函数的文档以获取更多类型信息。

class CubicSpline
CubicBezierPath

shape: (4*N, 3)

CubicBezierPath 的一个特例,其中所有 \(N\) 条三次贝塞尔曲线相互连接,形成一个三次样条:[[float, float, float], ...], ...]

请参阅您正在使用的函数的文档以获取更多类型信息。

class CubicSplineLike
CubicBezierPathLike

shape: (4*N, 3)

CubicBezierPath 的一个特例,其中所有 \(N\) 条三次贝塞尔曲线相互连接,形成一个三次样条:[[float, float, float], ...], ...]

这表示任何可以转换为 :class:CubicSpline NumPy 数组的对象。

请参阅您正在使用的函数的文档以获取更多类型信息。

class BezierPoints
Point3D_Array

shape: (PPC, 3)

一个 Point3D_Array,包含单个 \(n\) 阶贝塞尔曲线的 \(\text{PPC}\) 个控制点(\(\text{PPC: Points Per Curve} = n + 1\)):[[float, float, float], ...]

请参阅您正在使用的函数的文档以获取更多类型信息。

class BezierPointsLike
Point3DLike_Array

shape: (PPC, 3)

一个 Point3DLike_Array,包含单个 \(n\) 阶贝塞尔曲线的 \(\text{PPC}\) 个控制点(\(\text{PPC: Points Per Curve} = n + 1\)):[[float, float, float], ...]

这表示任何可以转换为 :class:BezierPoints NumPy 数组的对象。

请参阅您正在使用的函数的文档以获取更多类型信息。

class BezierPoints_Array
NDArray[PointDType]

shape: (N, PPC, 3)

一个 NumPy 数组,包含 \(N\)BezierPoints 对象,每个对象包含 \(\text{PPC}\)Point3D 对象(\(\text{PPC: Points Per Curve} = n + 1\)):[[[float, float, float], ...], ...]

请参阅您正在使用的函数的文档以获取更多类型信息。

class BezierPointsLike_Array
BezierPoints_Array | Sequence[BezierPointsLike]

shape: (N, PPC, 3)

一个包含 \(N\)BezierPointsLike 对象的序列,每个对象包含 \(\text{PPC}\)Point3DLike 对象(\(\text{PPC: Points Per Curve} = n + 1\)):[[[float, float, float], ...], ...]

这表示任何可以转换为 :class:BezierPoints_Array NumPy 数组的对象。

请参阅您正在使用的函数的文档以获取更多类型信息。

class BezierPath
Point3D_Array

shape: (PPC*N, 3)

一个 Point3D_Array,包含 \(\text{PPC} \cdot N\) 个点,其中 \(N\) 个连续的 \(\text{PPC}\) 控制点块中的每一个都表示一条 \(n\) 阶贝塞尔曲线(\(\text{PPC: Points Per Curve} = n + 1\)):[[float, float, float], ...], ...]

请参阅您正在使用的函数的文档以获取更多类型信息。

class BezierPathLike
Point3DLike_Array

shape: (PPC*N, 3)

一个 Point3DLike_Array,包含 \(\text{PPC} \cdot N\) 个点,其中 \(N\) 个连续的 \(\text{PPC}\) 控制点块中的每一个都表示一条 \(n\) 阶贝塞尔曲线(\(\text{PPC: Points Per Curve} = n + 1\)):[[float, float, float], ...], ...]

这表示任何可以转换为 :class:BezierPath NumPy 数组的对象。

请参阅您正在使用的函数的文档以获取更多类型信息。

class Spline
BezierPath

shape: (PPC*N, 3)

BezierPath 的一个特例,其中所有 \(N\) 条由 \(\text{PPC}\)Point3D 对象组成的贝塞尔曲线(\(\text{PPC: Points Per Curve} = n + 1\))相互连接,形成一个 \(n\) 阶样条:[[float, float, float], ...], ...]

请参阅您正在使用的函数的文档以获取更多类型信息。

class SplineLike
BezierPathLike

shape: (PPC*N, 3)

BezierPathLike 的一个特例,其中所有 \(N\) 条由 \(\text{PPC}\)Point3D 对象组成的贝塞尔曲线(\(\text{PPC: Points Per Curve} = n + 1\))相互连接,形成一个 \(n\) 阶样条:[[float, float, float], ...], ...]

这表示任何可以转换为 :class:Spline NumPy 数组的对象。

请参阅您正在使用的函数的文档以获取更多类型信息。

class FlatBezierPoints
NDArray[PointDType] | tuple[float, ...]

shape: (3*PPC*N,)

一个扁平化的贝塞尔控制点数组:[float, ...]

函数类型

class FunctionOverride
Callable

为指定的 Mobject 返回 Animation 的函数类型。

class PathFuncType
Callable[[Point3DLike, Point3DLike, float], Point3DLike]

将两个 :class:Point3D 对象和一个 alpha 值映射到一个新的 :class:Point3D 的函数。

class MappingFunction
Callable[[Point3D], Point3D]

一个将 :class:Point3D 映射到另一个 :class:Point3D 的函数。

class MultiMappingFunction
Callable[[Point3D_Array], Point3D_Array]

一个将 :class:Point3D_Array 映射到另一个 :class:Point3D_Array 的函数。

图像类型

class PixelArray
NDArray[ManimInt]

shape: (height, width) | (height, width, 3) | (height, width, 4)

一个栅格化图像,高度为 height 像素,宽度为 width 像素。

数组中的每个值都是一个介于 0 到 255 之间的整数。

每个像素要么由一个表示其亮度(用于灰度图像)的单个整数表示,要么由一个 RGB_Array_Int 或一个 RGBA_Array_Int 表示。

class GrayscalePixelArray
PixelArray

shape: (height, width)

一个 100% 不透明的灰度 PixelArray,其中每个像素值都是一个 ManimInt,表示其亮度(黑 -> 灰 -> 白)。

class RGBPixelArray
PixelArray

shape: (height, width, 3)

一个 100% 不透明的彩色 PixelArray,其中每个像素值都是一个 RGB_Array_Int 对象。

class RGBAPixelArray
PixelArray

shape: (height, width, 4)

一个彩色的 PixelArray,其中像素可以是透明的。每个像素值都是一个 RGBA_Array_Int 对象。

路径类型

class StrPath
str | PathLike[str]

一个字符串或 os.PathLike 对象,表示目录或文件的路径。

class StrOrBytesPath
str | bytes | PathLike[str] | PathLike[bytes]

一个字符串、字节或 os.PathLike 对象,表示目录或文件的路径。