空间操作

用于二维和三维向量的实用函数。

函数

R3_to_complex(point)[source]
参数:

point (Sequence[float])

返回类型:

ndarray

angle_axis_from_quaternion(quaternion)[source]

从四元数获取角度和轴。

参数:

quaternion (Sequence[float]) – 我们从中获取角度和轴的四元数。

返回:

给出角度和轴

返回类型:

Sequence[float]

angle_between_vectors(v1, v2)[source]

返回两个向量之间的夹角。该角度始终在0到π之间。

参数:
  • v1 (ndarray) – 第一个向量。

  • v2 (ndarray) – 第二个向量。

返回:

向量之间的夹角。

返回类型:

浮点数

angle_of_vector(vector)[source]

当向量投影到xy平面时,返回极坐标theta。

参数:

vector (Sequence[float] | ndarray) – 要查找角度的向量。

返回:

投影向量的角度。

返回类型:

浮点数

cartesian_to_spherical(vec)[source]

返回一个数组,其中包含每个极坐标值(距离、phi、theta)对应的数字。

参数:

vec (Sequence[float]) – 一个numpy数组[x, y, z]

返回类型:

ndarray

center_of_mass(points)[source]

获取空间中点的质心。

参数:

points (PointNDLike_Array) – 要查找质心的点。

返回:

这些点的质心。

返回类型:

np.ndarray

compass_directions(n=4, start_vect=array([1., 0., 0.]))[source]

使用tau查找基准方向。

参数:
  • n (int) – 旋转量,默认为4

  • start_vect (ndarray) – 角度的起始方向,默认为RIGHT

返回:

已旋转的角度。

返回类型:

np.ndarray

complex_func_to_R3_func(complex_func)[source]
参数:

complex_func (Callable[[complex], complex])

返回类型:

Callable[[Point3DLike], Point3D]

complex_to_R3(complex_num)[source]
参数:

complex_num (complex)

返回类型:

ndarray

cross(v1, v2)[source]
参数:
返回类型:

三维向量

cross2d(a, b)[source]

计算所传递向量(序列)的行列式。

参数:
返回:

指定向量前两个分量的行列式或行列式序列。

返回类型:

Sequence[float] | float

示例

>>> cross2d(np.array([1, 2]), np.array([3, 4]))
np.int64(-2)
>>> cross2d(
...     np.array([[1, 2, 0], [1, 0, 0]]),
...     np.array([[3, 4, 0], [0, 1, 0]]),
... )
array([-2,  1])
earclip_triangulation(verts, ring_ends)[source]

返回一个索引列表,表示多边形(可能带孔)的三角剖分。

参数:
  • verts (ndarray) – verts是一个numpy点数组。

  • ring_ends (list) – ring_ends是一个索引列表,指示新路径的结束位置。

返回:

一个给出多边形三角剖分的索引列表。

返回类型:

list

find_intersection(p0s, v0s, p1s, v1s, threshold=1e-05)[source]

返回通过p0方向v0的线与通过p1方向v1的线的交点(或此类点/方向数组的交点数组)。对于三维值,它返回射线p0 + v0 * t上最接近射线p1 + v1 * t的点。

参数:
返回类型:

list[Point3D]

get_unit_normal(v1, v2, tol=1e-06)[source]

获取向量的单位法线。

参数:
  • v1 (Vector3D) – 第一个向量。

  • v2 (Vector3D) – 第二个向量。

  • tol (float) – [描述],默认为1e-6

返回:

两个向量的法线。

返回类型:

np.ndarray

get_winding_number(points)[source]

确定多边形围绕原点缠绕的次数。

方向以数学正向测量,即逆时针方向。

参数:

points (Sequence[ndarray]) – 查询的多边形的顶点。

返回类型:

浮点数

示例

>>> from manim import Square, get_winding_number
>>> polygon = Square()
>>> get_winding_number(polygon.get_vertices())
np.float64(1.0)
>>> polygon.shift(2 * UP)
Square
>>> get_winding_number(polygon.get_vertices())
np.float64(0.0)
line_intersection(line1, line2)[source]

返回两条线的交点,每条线由线上的一对不同点定义。

参数:
  • line1 (Sequence[ndarray]) – 确定第一条线的两个点的列表。

  • line2 (Sequence[ndarray]) – 确定第二条线的两个点的列表。

返回:

两条相交线的交点。

返回类型:

np.ndarray

抛出:

ValueError – 如果两条线不相交或坐标不在xy平面上,则会产生错误。

midpoint(point1, point2)[source]

获取两点的中点。

参数:
  • point1 (Sequence[float]) – 第一个点。

  • point2 (Sequence[float]) – 第二个点。

返回:

这些点的中点

返回类型:

Union[float, np.ndarray]

norm_squared(v)[source]
参数:

v (float)

返回类型:

浮点数

normalize(vect, fall_back=None)[source]
参数:
  • vect (ndarray | tuple[float])

  • fall_back (ndarray | None)

返回类型:

ndarray

normalize_along_axis(array, axis)[source]

使用提供的轴归一化数组。

参数:
  • array (ndarray) – 需要归一化的数组。

  • axis (ndarray) – 要归一化的轴。

返回:

已根据轴归一化的数组。

返回类型:

np.ndarray

perpendicular_bisector(line, norm_vector=array([0., 0., 1.]))[source]

返回一个包含两个点的列表,这些点对应于给定两点垂直平分线的两端。

参数:
  • line (Sequence[ndarray]) – 包含两个numpy数组点(对应于线的两端)的列表。

  • norm_vector (Vector3D) – 垂直于给定线和垂直平分线的向量。

返回:

一个包含两个numpy数组点的列表,这些点对应于垂直平分线的两端

返回类型:

list

quaternion_conjugate(quaternion)[source]

用于查找四元数的共轭。

参数:

quaternion (Sequence[float]) – 您想要查找共轭的四元数。

返回:

四元数的共轭。

返回类型:

np.ndarray

quaternion_from_angle_axis(angle, axis, axis_normalized=False)[source]

从角度和轴获取四元数。有关更多信息,请查看此维基百科页面

参数:
  • angle (float) – 四元数的角度。

  • axis (ndarray) – 四元数的轴。

  • axis_normalized (bool) – 检查轴是否已归一化,默认为False

返回:

从角度和轴返回四元数

返回类型:

list[float]

quaternion_mult(*quats)[source]

获取所提供四元数的哈密顿积。有关更多信息,请查看此维基百科页面

返回:

返回两个四元数乘积的列表。

返回类型:

Union[np.ndarray, List[Union[float, np.ndarray]]]

参数:

quats (Sequence[float])

regular_vertices(n, *, radius=1, start_angle=None)[source]

围绕以原点为中心的圆生成等距顶点。

参数:
  • n (int) – 顶点数量

  • radius (float) – 顶点所在的圆的半径。

  • start_angle (float | None) –

    顶点开始的角度。

    如果未指定,对于偶数n值,将使用0。对于奇数n值,使用90度。

返回:

  • vertices (numpy.ndarray) – 等距顶点。

  • start_angle (float) – 顶点开始的角度。

返回类型:

tuple[ndarray, float]

rotate_vector(vector, angle, axis=array([0., 0., 1.]))[source]

旋转向量的函数。

参数:
  • vector (ndarray) – 要旋转的向量。

  • angle (float) – 旋转角度。

  • axis (ndarray) – 要旋转的轴,默认为OUT

返回:

带有提供角度和轴的旋转向量。

返回类型:

np.ndarray

抛出:

ValueError – 如果向量不是二维或三维。

rotation_about_z(angle)[source]

返回给定角度的旋转矩阵。

参数:

angle (float) – 旋转矩阵的角度。

返回:

返回旋转后的矩阵。

返回类型:

np.ndarray

rotation_matrix(angle, axis, homogeneous=False)[source]

在R^3中绕指定旋转轴的旋转。

参数:
  • angle (float)

  • axis (ndarray)

  • homogeneous (bool)

返回类型:

ndarray

rotation_matrix_from_quaternion(quat)[source]
参数:

quat (ndarray)

返回类型:

ndarray

rotation_matrix_transpose(angle, axis)[source]
参数:
  • angle (float)

  • axis (ndarray)

返回类型:

ndarray

rotation_matrix_transpose_from_quaternion(quat)[source]

将四元数 quat 转换为等效的旋转矩阵表示。有关更多信息,请查看此页面

参数:

quat (ndarray) – 要转换的四元数。

返回:

返回旋转矩阵表示,作为3x3矩阵或3x3xN多维数组返回。

返回类型:

List[np.ndarray]

shoelace(x_y)[source]

鞋带公式的二维实现。

返回:

返回有符号面积。

返回类型:

浮点数

参数:

x_y (Point2D_Array)

shoelace_direction(x_y)[source]

使用鞋带法确定的面积来确定输入点集是顺时针方向还是逆时针方向。

返回:

"CW"(顺时针)或"CCW"(逆时针)。

返回类型:

str

参数:

x_y (Point2D_Array)

spherical_to_cartesian(spherical)[source]

根据给定的球坐标返回一个numpy数组[x, y, z]

参数:

spherical (Sequence[float]) –

一个包含以下三个浮点数的列表:

r - 点与原点之间的距离。

theta - 点到正x轴的方位角。

phi - 点到正z轴的垂直角。

返回类型:

ndarray

thick_diagonal(dim, thickness=2)[source]
参数:
  • dim (int)

  • thickness (int)

返回类型:

MatrixMN

z_to_vector(vector)[source]

返回SO(3)中的某个矩阵,该矩阵将z轴转换为作为参数提供的(归一化)向量。

参数:

vector (ndarray)

返回类型:

ndarray