插補與座標變換
純量、向量、顏色與離散值
實數使用保留精確端點的線性插補 \(L(a, b, u) = (1 - u) a + u b\);向量與顏色逐分量套用,離散值則在指定門檻切換。
角度與仿射變換
角度採最短有號差
\[
\Delta=((b-a+\pi) \mod 2\pi)-\pi, \quad \theta(u)=a+u \Delta.
\]
2D 變換把平移、旋轉、縮放與剪切組成 \(3 \times 3\) 齊次矩陣。矩陣乘法的次序有意義,先平移再旋轉並不等於先旋轉再平移。
四元數旋轉
單位軸 \(v\) 與角度 \(\theta\) 轉成 \(q=(\cos(\theta/2),v \sin(\theta/2))\)。若 \(q_0 \cdot q_1<0\),先反轉 \(q_1\) 以走短弧。令 \(\theta=arccos(q_0 \cdot q_1)\),則
\[
\text{slerp}(q_0,q_1,u)=(\sin((1-u)\theta)/\sin \theta) q_0+(\sin(u \theta)/\sin \theta) q_1.
\]
兩端幾乎平行時改用正規化線性插補,避免數值不穩定。
幾何值與驗證
Quaternion(w=1.0, x=0.0, y=0.0, z=0.0)
用於 3D 旋轉的單位四元數;建立時會驗證並正規化有限、非零的分量。
Transform2D(
translate=Vec2(x=0.0, y=0.0),
rotation=0.0,
scale=Vec2(x=1.0, y=1.0),
pivot=Vec2(x=0.0, y=0.0),
)
不可變的 2D 仿射變換,組合平移、旋轉、縮放與剪切。
Transform3D(
translate=Vec3(x=0.0, y=0.0, z=0.0),
rotation=...,
scale=Vec3(x=1.0, y=1.0, z=1.0),
pivot=Vec3(x=0.0, y=0.0, z=0.0),
)
不可變的 3D 齊次變換,用於平移、旋轉、縮放與變換組合。
自訂插補器
自訂屬性型別可向登錄表(registry)註冊插補器。KineticKit 在編譯動作時解析型別與插補器;缺少實作會在輸出任何影格之前失敗。