幾何數值物件
所有數值物件都不可變,運算會回傳新物件。座標必須為有限值;建立物件時遇到 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。