Space_ops¶
manimlib/utils/space_ops.py
这个文件中主要实现了和空间坐标计算有关的函数
返回向量 vect 的模长
返回两个 四元数 q1, q2 相乘的乘积
根据 轴-角 确定用于旋转的 四元数
返回[cos(angle/2), sin(angle/2)*axis]
返回从四元数确定旋转的轴和角
返回 quaternion 的共轭四元数
返回将vector以axis为轴,旋转angle角度后的向量
若 vector 是二维 ndarray,则使用复数运算
若 vector 是三维 ndarray,则使用四元数运算
返回一个 dim*dim 大小,对角线宽度为 thickness 的方阵
返回通过四元数确定的旋转矩阵(但是转置的)
返回通过四元数确定的旋转矩阵
返回通过角 angle 轴 axis 确定的旋转矩阵(但是转置的)
返回通过角 angle 轴 axis 确定的旋转矩阵
返回沿 z 轴旋转 angle 的旋转矩阵
返回可以使 z 轴方向旋转到 vector 方向的变换矩阵
返回 vector 在 xy 平面投影的极坐标系下的 theta
返回两向量 v1, v2 的夹角
点在向量上的投影
返回 vect 的单位向量
若 vect 为零向量,且 fall_back=None,返回零向量
若 vect 为零向量,且 fall_back不为None,返回 fall_back
将所有向量沿 axis 单位化
返回两向量 v1, v2 的叉积
返回向量 v1, v2 确定的平面的法向量
将 TAU 分成 n 份,从 start_vect 开始返回沿每个方向的单位向量
复数转化为坐标(z 轴为 0)
取坐标前两轴为复数
将针对复数的函数转化为针对坐标的函数
返回点集 points 的重心
返回 point1,point2 的中点
返回两直线交点
注意: 需要使用
get_start_and_end()
p = line_intersection(
l1.get_start_and_end(),
l2.get_start_and_end()
)
过 p0 点,v0 向量方向上的射线 l1,与过 p1 点,v1 的向量上的射线 l2 的交点
如果是三维的情况,则返回两射线距离最近的点
找到点 p 到 线段 ab 距离最近的点 x
如果 p 点投影在线段 ab 上,则返回垂足
如果 p 点投影不在线段 ab 上,则返回与投影最接近的线段端点
返回卷绕数
二阶矩阵相乘,如果 a 不是二阶矩阵,则返回
a[0] * b[1] - b[0] * a[1]
判断点 p 是否在点 a, b, c 构成的三角形中
三维向量模长平方
(似乎可以用其他方法计算任意维度向量模长平方,例如 (v ** 2).sum()
)
三角剖分