2021年7月18日 星期日

B-Splines 曲線模型簡介

我們在前文簡介了 Hermite SplinesCatmull-Rom Splines 以及 Bezier Splines。本文要介紹的是另一種曲線模型 B-Splines。

三次方的 Hermite、Catmull-Rom、Bezier Splines 都只能達到 C1 連續性,都無法滿足 C2 連續性(也就是 curvature 的連續)的要求,而如果想要滿足的話有幾種可能性:

  • 用更高次方的曲線模型,但是計算會變得更複雜。
  • 放棄 local control 的要求:natural cubic splines 便是一種無法滿足 local control 要求的曲線模型。
  • 放棄用端點來生成內插曲線的要求:B-Splines 便是放棄此要求。前文所介紹的曲線模型,以及 natural cubic splines 的曲線都會經過端點,但是 B-Splines 只能保證曲線會很接近端點。

因此對於三次方的曲線模型來說,C2 連續性、local control 以及內插曲線三種要求只能滿足其二。

建構 B-Splines 曲線

假如有 N 段曲線的話,需要 N+3 個控制點。我們可以用 Cox-deBoor 演算法來產生B-Splines 曲線: \[ b_1 = \left\{\begin{matrix} 1\quad 0\leq u < 1 \\ 0\quad otherwise \end{matrix}\right. \\ b_d =\frac{t}{d-1} b_{d-1}(t)+\frac{d-t}{d-1}b_{d-1}(t-1) \] 下圖為參考資料 [1] 的示意圖:

B-Splines

可以看出每一層 \(b_d\) 都是將前一層 \(b_{d-1}\) 變得更平滑後的結果。

最後要提到的是 B-Splines 的矩陣表示式: \[ p(t)= \begin{bmatrix} t^3 &t^2 &t &1 \end{bmatrix} \cdot \frac{1}{6} \begin{bmatrix} -1 &3 &-3 &1 \\ 3 &-6 &3 &0 \\ -3 &0 &3 &0 \\ 1 &4 &1 &0 \end{bmatrix} \begin{bmatrix} p_{k-1}\\ p_{k}\\ p_{k+1}\\ p_{k+2} \end{bmatrix} \]


參考資料

[1] B-Splines

沒有留言:

張貼留言