构造B样条基函数: 以三次为例
1. 参数化
型值点参数,建立 \(d_i 与t_i\)之间的关系。
👆 图中是均匀参数化的例子。 \(i\) 是参数, \(i\) 的取值构成节点向量基函数通过结点向量来定义,每个基函数定义在几个特定的节点上。
2. 构造基函数𝑏(𝑡)
𝑏(𝑡)应满足以下性质
- 𝑏(𝑡) is \(C^2\) continuous
- 𝑏(𝑡) is piecewise polynomial, degree 3 (cubic)
- 𝑏(𝑡) is has local support
- Overlaying shifted \(𝑏 (𝑡+i)\) forms a partition of unity
- \(𝑏(𝑡)\ge 0 \) for all 𝑡
In short: - All desirable properties build into the basis
- Linear combinations will inherit these
基函数的构造方法
Repeated linear interpolation:从0阶(水平直线)开始,使用\(t\)和\((1-t)\)进行线性组合、即升阶每升一次阶,曲线会更光滑,跨度区间会多覆盖一个结点。
基函数的定义
De Boor Recursion: uniform k阶 B样条基函数的定义
Uniform:使用均匀参数化
B‐spline curves: general case
此页公式定义在非均匀结点上。
Given: knot sequence \(t_0 < t_1 < \cdots < t_n < \cdots < t_{n+k}\) \((t_0,t_i,\cdots,t_{n=k})\) is called knot vector
Normalized B‐spline functions \(N_{i,k}\)of the order (degree \(k-1\)) are defined as:
$$ N_{i,1}(t)=\begin{cases} 1,t_i\le t<t_{i+1}\\ \\ 0,otherwise \end{cases} $$
$$ N_{i,1}(t)=\frac{t-t_i}{t_{i+k-1}-t_i} N_{i,k-1}(t)+\frac{t_{i+k}-t}{t_{i+k}-t_{i+1}}N_{i+1,k-1}(t) $$
for \(k>1\), and \(i=0,...,n\)
基函数的例子
Example 1
$$ N_{i,1}(t)=\begin{cases} 1,t_i\le t<t_{i+1}\\ 0,otherwise \end{cases} $$
$$ N_{i,1}(t)=\frac{t-t_i}{t_{i+k-1}-t_i} N_{i,k-1}(t)+\frac{t_{i+k}-t}{t_{i+k}-t_{i+1}}N_{i+1,k-1}(t) $$
for\( k>1,\) and \(i=0,...,n\)
\(N_{i, k}:K 代表阶数,i代表第i\)个基函数。
\(N_{1, 1}和 N_{2, 1}组合,得到 N_{1, 2}\)
\(N_{1, 2}和 N_{2, 2}组合,得到 N_{1, 3}\)
Example 2
Example 3
3. 基函数的平移和伸缩
每个基函数是同一个基函数的平移或伸缩得到,其中第 \(i\) 个基函数是以\(t_i\)为中心的局部函数。
基函数性质
局部性
\(𝑁_{i,k}(t)\) > 0 for \(𝑡_i < 𝑡 < t_{i+k}\)
\(𝑁_{i,k}(t)\) = 0 for \(𝑡_0 < 𝑡 < t_i\) or \(t_{i+k} <t < t_{n+k}\)
The interval \([t_i,t_{i+k}]\), is called support of \(N_{i,k}\)
权性 + 凸包性
\(\sum_{i=0}^{n} N_{i,k}(t)=1 \)for \(t_{k-1}\le t\le t_{n+1} \)
光滑性
For \(\quad t_i\le t_j\le t_{i+k}\), the basis functions \(N_{i,k}(t)\) are \(C^{k-2} \) at the knots \(t_j\)
本文出自CaterpillarStudyGroup,转载请注明出处。 https://caterpillarstudygroup.github.io/GAMES102_mdbook/