b样条曲线
1、背景介绍:
前文介绍了构造曲线的一种方式bezier。但是,bezier曲线存在一定的弊端,使得它有很大的局限性。即它必须是全局的,如果不是全局的,则无法提供高次的连续性的保证。而高次的连续性保证是许多工业领域在设计曲线时的要求,比如:铁路轨道总是高次曲率连续的,否则行驶中的火车会经历剧烈的颠簸。
为了解决既满足全局的光滑曲线的要求,又能在局部可以调整形状的同时实现高阶的连续,b样条这一方法被引入了进来。b样条广泛的用于cad软件和众多计算机图形学算法库中,相比于bezier曲线,b样条有两个优势:(1)b样条基函数多项式次数独立于控制点个数。(2)允许局部控制曲线。缺点:比bezier更加复杂。
B 样条曲线可以被认为是定义了一个n-1次连续的多个n 阶 Bezier 曲线的顺序组合。即,在区间内b样条满足n阶连续,在区间之间b样条满足n-1阶连续。
2、b样条公式:
给定参数轴一个分割:
T
:
t
i
i
=
−
∞
+
∞
,
t
i
≤
t
i
+
1
T:{t_i}^{+\infin}_{i=-\infin},t_i\leq t_{i+1}
T:tii=−∞+∞,ti≤ti+1,k阶b样条基函数可由下式给出:
{
B
i
,
1
=
{
1
,
t
∈
[
t
i
,
t
i
+
1
)
,
0
,
o
t
h
e
r
v
a
l
u
e
s
B
i
,
k
(
t
)
=
t
−
t
i
t
i
+
k
−
1
−
t
i
B
i
,
k
−
1
(
t
)
+
t
i
+
k
−
t
t
i
+
k
−
t
i
+
1
B
i
+
1
,
k
−
1
(
t
)
,
k
⩾
2
\left\{\begin{array}{cc} B_{i,1}=\left\{\begin{array}{cc} 1, & t\in[t_i,t_{i+1}),\\ 0, & other\ values \end{array}\right.\\ B_{i,k}(t)=\frac{t-t_i}{t_{i+k-1}-t_i}B_{i,k-1}(t)+\frac{t_{i+k}-t}{t_{i+k}-t_{i+1}}B_{i+1,k-1}(t),k\geqslant 2 \end{array}\right.
⎩⎨⎧Bi,1={1,0,t∈[ti,ti+1),other valuesBi,k(t)=ti+k−1−tit−tiBi,k−1(t)+ti+k−ti+1ti+k−tBi+1,k−1(t),k⩾2
Notes:规定0/0=0
上式称为cox-de Boor公式,T称为结点向量(knot vector), t i t_i ti称为节点(knot),若 t i = t j + 1 = . . . = t j + l − 1 t_i=t_{j+1}=...=t_{j+l-1} ti=tj+1=...=tj+l−1,称
b样条放弃了bezier曲线在构造时,所有的样条基函数都是非零的这一限制。b样条的所有的样条基都只在局部为正,具体的说,对于区间节点为
u
0
,
u
1
,
u
2
,
.
.
.
u_0,u_1,u_2,...
u0,u1,u2,...的k阶b样条曲线,节点区间
(
u
i
,
u
i
+
1
)
(u_i,u_i+1)
(ui,ui+1)的样条基中只有
B
i
−
k
+
1
,
k
(
t
)
,
.
.
.
,
B
i
,
k
(
t
)
B_{i-k+1,k}(t),...,B_{i,k}(t)
Bi−k+1,k(t),...,Bi,k(t)为正,其余均为0。即:
∑
a
=
−
∞
+
∞
B
a
,
k
=
∑
a
=
i
−
k
+
1
k
−
1
B
a
,
k
=
1
\sum_{a=-\infin}^{+\infin} B_{a,k}=\sum_{a=i-k+1}^{k-1} B_{a,k}=1
a=−∞∑+∞Ba,k=a=i−k+1∑k−1Ba,k=1
3、示例:
接下来我们以一个二阶b样条曲线为例来进行上述公式的计算,给定 u 0 , u 1 , u 2 , u 3 = 0 , 2 , 4 , 6 u_0,u_1,u_2,u_3=0,2,4,6 u0,u1,u2,u3=0,2,4,6,控制点坐标为 b [ u 0 , u 1 ] = ( 0 , 0 ) , b [ u 1 , u 2 ] = ( 8 , 8 ) , b [ u 2 , u 3 ] = ( 8 , 0 ) b[u_0,u_1]=(0,0),b[u_1,u_2]=(8,8),b[u_2,u_3]=(8,0) b[u0,u1]=(0,0),b[u1,u2]=(8,8),b[u2,u3]=(8,0),计算u=3时,b的值。
分析:u=3,落在了2和4之间,也就是
u
1
和
u
2
u_1和u_2
u1和u2之间,下式中括号中元素
u
0
,
u
1
,
u
2
,
u
3
,
u
即
0
,
2
,
4
,
6
,
3
u_0,u_1,u_2,u_3,u即0,2,4,6,3
u0,u1,u2,u3,u即0,2,4,6,3,控制点坐标在上面给出,即求b[u,u]:
b
[
u
,
u
]
=
u
2
−
u
u
2
−
u
1
b
[
u
1
,
u
]
+
u
−
u
1
u
2
−
u
1
b
[
u
,
u
2
]
=
4
−
3
4
−
2
b
[
u
1
,
u
]
+
u
−
2
4
−
2
b
[
u
,
u
2
]
=
0.5
∗
b
[
u
1
,
u
]
+
0.5
∗
b
[
u
,
u
2
]
b
[
u
1
,
u
]
=
u
2
−
u
u
2
−
u
0
b
[
u
0
,
u
1
]
+
u
−
u
0
u
2
−
u
0
b
[
u
1
,
u
2
]
=
4
−
3
4
−
0
[
0
,
0
]
+
3
−
0
4
−
0
[
8
,
8
]
=
0.25
∗
[
0
,
0
]
+
0.75
∗
[
8
,
8
]
=
[
6
,
6
]
b
[
u
,
u
2
]
=
u
3
−
u
u
3
−
u
1
b
[
u
1
,
u
2
]
+
u
−
u
1
u
3
−
u
1
b
[
u
2
,
u
3
]
=
6
−
3
6
−
2
b
[
u
1
,
u
2
]
+
3
−
2
6
−
2
b
[
u
2
,
u
3
]
=
0.75
∗
[
8
,
8
]
+
0.25
∗
[
8
,
0
]
=
[
8
,
6
]
b
[
u
,
u
]
=
0.5
∗
[
6
,
6
]
+
0.5
∗
[
8
,
6
]
=
[
7
,
6
]
\begin{aligned} b[u,u]&=\frac{u_2-u}{u_2-u_1}b[u_1,u]+\frac{u-u_1}{u_2-u_1}b[u,u_2] \\ &=\frac{4-3}{4-2}b[u_1,u]+\frac{u-2}{4-2}b[u,u_2] \\ &=0.5*b[u_1,u]+0.5*b[u,u_2] \\ b[u_1,u]&=\frac{u_2-u}{u_2-u_0}b[u_0,u_1]+\frac{u-u_0}{u_2-u_0}b[u_1,u_2] \\ &=\frac{4-3}{4-0}[0,0]+\frac{3-0}{4-0}[8,8] \\ &=0.25*[0,0]+0.75*[8,8] \\ &=[6,6] \\ b[u,u_2]&=\frac{u_3-u}{u_3-u_1}b[u_1,u_2]+\frac{u-u_1}{u_3-u_1}b[u_2,u_3] \\ &=\frac{6-3}{6-2}b[u_1,u_2]+\frac{3-2}{6-2}b[u_2,u_3] \\ &=0.75*[8,8]+0.25*[8,0] \\ &=[8,6] \\ b[u,u]&=0.5*[6,6]+0.5*[8,6] \\ &=[7,6] \end{aligned}
b[u,u]b[u1,u]b[u,u2]b[u,u]=u2−u1u2−ub[u1,u]+u2−u1u−u1b[u,u2]=4−24−3b[u1,u]+4−2u−2b[u,u2]=0.5∗b[u1,u]+0.5∗b[u,u2]=u2−u0u2−ub[u0,u1]+u2−u0u−u0b[u1,u2]=4−04−3[0,0]+4−03−0[8,8]=0.25∗[0,0]+0.75∗[8,8]=[6,6]=u3−u1u3−ub[u1,u2]+u3−u1u−u1b[u2,u3]=6−26−3b[u1,u2]+6−23−2b[u2,u3]=0.75∗[8,8]+0.25∗[8,0]=[8,6]=0.5∗[6,6]+0.5∗[8,6]=[7,6]
性质:
1、曲线满足k-1阶连续。
2、对于n+1个控制点,由n+1个混合函数进行描述。
3、控制点可以重复,可以删减,可以增加。
4、每个曲线段受k个控制点影响。
5、每个曲线段会落在k+1个控制点形成的凸包内。
6、任意一个控制点可以影响最多k个曲线段的形状。
如上图所示,为了满足过初始(结尾)的控制点,需要对现有的控制点进行扩张,通常是把初始控制点复制达到k个。此时,b样条曲线过初始顶点,且与0,1控制点形成的线段相切。如果对于2阶b样条,如果想过9这个控制点,则需要在最后再复制一份9这个控制节点加入结点向量。
应用:
1、通过采样方式对函数的数值进行b样条插值,包括图像,路径,温度等的插值等。
2、对几何外形进行人为的构造。
3、车床在走刀头时,要求所车的部件至少是c2光滑的,才能满足不会卡刀的要求,因此在cad设计时,可以采用3次b样条曲线。
CAGD_ThomasSederberg.pdf
Chapter 2. B样条曲线.pdf