文档介绍:三次周期B样条曲线的算法
另一种方法: 0 u<1和四个控制点p0,p1,p2和p3.
设P(u)是一个三次周期B样条,满足条件:
P(0) = (p0 + 4p1 + p2)/6,
P(1) = (p1 + 4p2 + p3)/6,
P(0) = (p2 – p0)/2,
P(1) = (p3 – p1)/2.
1 4 1 0
0 1 4 1
-3 0 3 0
0 -3 0 3
p0
p1
p2
p3
P(0)
P(1)
P(0)
P(1)
=1/6
p0
p1
p4
p3
p2
(p0+p2)/2
2/3p1 + 1/3(p0+p2)/2
=(p0+4p1+p2)/6 = P(0)
上述假设条件的意义是: 是P(0), 是P(1),
p2p0平行于P(0), p3p1平行于P(1)。
假设P(u) = (u3 u2 u 1)MB(p0 p1 p2 p3)T,MB是变换矩阵。
那么,P(u) = (3u2 2u 1 0)MB(p0 p1 p2 p3)T
把u = 0,1分别代入上式,并利用前面的条件,得到
p0
p1
p2
p3
1 4 1 0
0 1 4 1
-3 0 3 0
0 -3 0 3
=
0 0 0 1
1 1 1 1
0 0 1 0
3 2 1 0
MB
p0
p1
p2
p3
MB = 1/6
1 4 1 0
0 1 4 1
-3 0 3 0
0 -3 0 3
0 0 0 1
1 1 1 1
0 0 1 0
3 2 1 0
-1
-1 3 -3 1
3 -6 3 0
-3 0 3 0
1 4 1 0
=1/6
1/6
-1 3 -3 1
3 -6 3 0
-3 0 3 0
1 4 1 0
p0
p1
p2
p3
P(u) = 1/6(u3 u2 u 1)
P(u) = p0(1-u)3/6 + p1(3u3-6u2+4)/6+ p2(-3u3+3u2+3u+1)/6 +p3u3/6
= p0B0,3(u) + p1B1,3(u) + p2B2,3(u) + p3B3,3(u)
P(u) = 1/6(3u2 2u 1)
-1 3 -3 1
3 -6 3 0
-3 0 3 0
p0
p1
p2
p3
= ½ (u2 u 1)
-1 3 -3 1
2 -4 2 0
-1 0 1 0
p0
p1
p2
p3
P(u) = (u 1)
-1 3 -3 1
1 -2 1 0
p0
p1
p2
p3
三次B样条的性质
C2连续性
记 Pk(u)为对应于控制点pk, pk+1,pk+2 和pk+3.
Pk(1) = (pk + 4pk+1 + pk+2)/6 = Pk+1(0) ,这是连续性
Pk(1) = ½ (pk+3 – pk+1) = Pk+1(0),这是C1连续性
Pk(1) = pk+1 -2pk+2 +pk+3 = Pk+1(0),这是C2连续性
局部性:改变一个控制点最多改变四个曲线段.
扩展性:增加一个控制点,只增加一个曲线段.
当B样条的节点是p0,p1,…,pn时,增加节点p-1和pn+1,使得 p-1p0 = p0p1和pn-1pn=pnpn+1
即p-1 + p1 = 2p0 和 pn-1 + pn+1 = 2pn。那么B样条以p0 为起点且切于p0p1,以pn 为终点且切于pn-1pn
事实上,增加了P-1(u)和Pn-2(u).
P0(0) = P-1(1) = (p-1+4p0+p1)/6 = p0,
P0(0) = P-1(1) = ½ (p1 – p-1) // (p1 – p0)
从B样条的插值点反求控制点
以三次周期B样条P(u)为例,每段三次B样条需要四个控制点,该样条的首尾两点均不是控制点。设有N个插值点{Qj:j=1,2,…,N}和N+2个控制点{pj: j=0,1,…,N+1}。三次B样条一般不经过控制点。第j段的三次周期B样条Pj(u)满足:
Pj(0) = (pj-1 + 4pj + pj+1)/6 = Qj, j=1,2,…,N.
对于点的每个坐标来说,共有N个方程,但是有N+2个未知数。需要补充两个边界条件。
(1)末两点经过Q1和QN的非周期三次B样条曲线。
p0 = Q1, pN+1 = QN.
(2)封闭的周期三次B样条曲线。 P0=PN, P1=PN+1。
(3)端点有二重控制点P0=P1和PN+1=PN的三次B样条曲线
=
(1)的矩阵的形式:
6 0
1 4 1
1 4 1
1 4 1
…
1 4 1
0 6
p0
p1
p2
.
.
.
pN-1
pN
pN+1
Q1