几何数值对象
所有数值对象都不可变,运算会返回新对象。坐标必须为有限值;创建对象时遇到 NaN 或无穷大会抛出 ValueError。
点与向量
Point(float, ...)
Vector(float, ...)
坐标 tuple。
维度 \(d\)。
第一个坐标(存在时)。
第二个坐标(存在时)。
第三个坐标(存在时)。
两个向量的内积。
向量的欧氏长度。
与向量同向的单位向量;零向量无法归一化。
\(\mathbb{R}^d\) 中的点或向量,由 \(d \ge 1\) 个坐标给定。点与向量按仿射几何的规则运算(参见点与向量的运算)。
| 表达式 | 结果 |
|---|---|
point - point |
Vector |
point + vector、point - vector |
Point |
vector + vector、vector * scalar |
Vector;也可写成 scalar * vector |
维度不同时抛出 DimensionMismatch。point + point 不会被拒绝:它把坐标相加并返回 Point,只有在权重总和为一的组合中才有意义,例如 de Casteljau 算法中的平均。
from bezierkit import Point, Vector
p = Point(1, 2)
# Point(coords=(7.0, 0.0))
q = p + Vector(3, -1) * 2
# Vector(coords=(6.0, -2.0))
v = q - p
# 6.324555320336759
print(v.norm())
点集合
PointSet(points)
一批不可变的点,背后是只读的 \((\text{count}, d)\) NumPy 数组,批量求值与采样都返回此对象。提供 count、dimension、array(只读副本)、各栏 x、y、z,可逐个取出 Point,也可用索引存取。
参数
Interval
Interval(start, end) 是闭区间,提供 contains()、clamp() 与 linspace()。
ParameterValues
由定义域检查单一参数或一维参数数组。每条曲线都使用它,因此对定义域为 \([0, 1]\) 的曲线调用 at(1.2) 会抛出 ParameterOutOfDomain。
异常
不属于几何的无效参数(例如负的容差)抛出 ValueError。