typing

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

开发者注意事项

在源代码周围有多个字符串,看起来像这样:

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

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

如果您需要定义一个新类别,请遵循上述描述的格式。

类型别名

原始数据类型

class ManimFloat
np.float64

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

class ManimInt
np.int64

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

它可以取\(-2^{63}\)\(+2^{63} - 1\)之间的值, 以10为基数表示的范围大约在\(-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格式的颜色。

其组件按顺序描述了所表示颜色中的红色、绿色、蓝色和透明度(不透明度)的强度。

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

形状: (4,)

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

其组件按顺序描述了所表示颜色中的红色、绿色、蓝色和透明度(不透明度)的强度。

class RGBA_Array_Int
NDArray[ManimInt]

形状: (4,)

一个由4个介于0到255之间的整数组成的numpy.ndarray,表示RGBA格式的颜色。

其组件按顺序描述了所表示颜色中的红色、绿色、蓝色和透明度(不透明度)的强度。

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)格式的颜色。

其组件按顺序描述了所表示颜色的色调、饱和度和值(或亮度)。

class HSV_Tuple_Float
RGB_Tuple_Float

形状: (3,)

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

其组件按顺序描述了所表示颜色的色调、饱和度和值(或亮度)。

class ManimColorInternal
RGBA_Array_Float

形状: (4,)

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

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

点类型

class PointDType
ManimFloat

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

class InternalPoint2D
NDArray[PointDType]

形状: (2,)

一个二维点:[float, float]

注意

这种类型别名主要用于内部使用,并且仅包括NumPy类型。

class Point2D
InternalPoint2D | tuple[float, float]

形状: (2,)

一个二维点:[float, float]

通常,一个期望Point2D作为参数的函数或方法可以处理传递Point3D的情况。

class InternalPoint2D_Array
NDArray[PointDType]

形状: (N, 2)

一个由InternalPoint2D对象组成的数组:[[float, float], ...]

注意

这种类型别名主要是为了内部使用而提供的,并且只包括NumPy类型。

class Point2D_Array
InternalPoint2D_Array | tuple[Point2D, ...]

形状: (N, 2)

一个由Point2D对象组成的数组:[[float, float], ...]

通常,一个期望Point2D_Array作为参数的函数或方法可以处理传递的Point3D_Array

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

class InternalPoint3D
NDArray[PointDType]

形状: (3,)

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

注意

这种类型别名主要用于内部使用,并且仅包括NumPy类型。

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

形状: (3,)

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

class InternalPoint3D_Array
NDArray[PointDType]

形状: (N, 3)

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

注意

这种类型别名主要用于内部使用,并且仅包括NumPy类型。

class Point3D_Array
InternalPoint3D_Array | tuple[Point3D, ...]

形状: (N, 3)

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

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

向量类型

class Vector2D
NDArray[PointDType]

形状: (2,)

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

通常,一个期望Vector2D作为参数的函数或方法可以处理传递Vector3D的情况。

注意

不要与VectorArrow VMobjects混淆!

class Vector2D_Array
NDArray[PointDType]

形状: (M, 2)

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

通常,一个期望Vector2D_Array作为参数的函数或方法可以处理传递Vector3D_Array的情况。

class Vector3D
NDArray[PointDType]

形状: (3,)

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

注意

不要与VectorArrow3D VMobjects混淆!

class Vector3D_Array
NDArray[PointDType]

形状: (M, 3)

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

class VectorND
NDArray[PointDType]

形状 (N,)

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

注意

不要与Vector VMobject混淆!这种类型别名被命名为“VectorND”而不是“Vector”,以避免潜在的名字冲突。

class VectorND_Array
NDArray[PointDType]

shape (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
NDArray[PointDType] | tuple[Point3D, Point3D, Point3D]

形状: (3, 3)

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

class QuadraticBezierPoints_Array
NDArray[PointDType] | tuple[QuadraticBezierPoints, ...]

形状: (N, 3, 3)

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

class QuadraticBezierPath
Point3D_Array

形状: (3*N, 3)

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

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

class QuadraticSpline
QuadraticBezierPath

形状: (3*N, 3)

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

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

class CubicBezierPoints
NDArray[PointDType] | tuple[Point3D, Point3D, Point3D, Point3D]

形状: (4, 3)

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

class CubicBezierPoints_Array
NDArray[PointDType] | tuple[CubicBezierPoints, ...]

形状: (N, 4, 3)

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

class CubicBezierPath
Point3D_Array

形状: (4*N, 3)

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

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

class CubicSpline
CubicBezierPath

形状: (4*N, 3)

CubicBezierPath的一个特殊情况,其中所有的\(N\)三次贝塞尔曲线都是连接的,形成一个二次样条: [[float, float, float], ...], ...]

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

class BezierPoints
Point3D_Array

形状: (PPC, 3)

一个Point3D_Array\(\text{PPC}\)控制点 (\(\text{PPC: 每条曲线的点数} = n + 1\)) 对于单个 \(n\)次贝塞尔曲线: [[float, float, float], ...].

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

class BezierPoints_Array
NDArray[PointDType] | tuple[BezierPoints, ...]

形状: (N, PPC, 3)

一个包含\(N\)BezierPoints对象的数组,每个对象包含\(\text{PPC}\)Point3D对象 (\(\text{PPC: 每条曲线的点数} = n + 1\)): [[[float, float, float], ...], ...].

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

class BezierPath
Point3D_Array

形状: (PPC*N, 3)

一个Point3D_Array\(\text{PPC} \cdot N\)点,其中每个 \(N\)连续的\(\text{PPC}\)控制点块 (\(\text{PPC: Points Per Curve} = n + 1\))代表一个 \(n\)次的Bézier曲线: [[float, float, float], ...], ...]

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

class Spline
BezierPath

形状: (PPC*N, 3)

BezierPath的一个特殊情况,其中所有由\(\text{PPC}\)Point3D对象组成的\(N\)条贝塞尔曲线(\(\text{PPC: 每条曲线的点数} = n + 1\))是相连的,形成一个\(n\)次样条: [[float, float, float], ...], ...]

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

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

形状: (3*PPC*N,)

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

函数类型

class FunctionOverride
Callable

函数类型返回指定MobjectAnimation

class PathFuncType
Callable[[Point3D, Point3D, float], Point3D]

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

class MappingFunction
Callable[[Point3D], Point3D]

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

图像类型

class Image
NDArray[ManimInt]

形状: (高度, 宽度) | (高度, 宽度, 3) | (高度, 宽度, 4)

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

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

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

class GrayscaleImage
Image

形状: (高度, 宽度)

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

class RGBImage
Image

形状: (高度, 宽度, 3)

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

class RGBAImage
Image

形状: (高度, 宽度, 4)

一个Image,其中像素可以是透明的。每个像素值是一个RGBA_Array_Int对象。

路径类型

class StrPath
str | PathLike[str]

表示目录或文件路径的字符串或os.PathLike

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

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