B-Spline Curve

B-Spline Representation

Spline of degree n n n as a spline of order n + 1 n+1 n+1.

Let a i a_{i} ai be a biinfinite and strictly increasing sequence of knots, which means a i &lt; a i + 1 a_{i} \lt a_{i+1} ai<ai+1, for all i i i. We define the B-Splines N i n N_{i}^{n} Nin with these knots by the recursion formula

N i n = { 1 f o r   u ∈ [ a i , a i + 1 ) 0 o t h e r w i s e N_{i}^{n} = \begin{cases} 1 \hspace{1cm} for \ u \in [a_{i}, a_{i+1}) \\ 0 \hspace{1cm} otherwise \end{cases} Nin={1for u[ai,ai+1)0otherwise

and
N i n ( u ) = α i n − 1 N i n − 1 ( u ) + ( 1 − α i n − 1 ) N i + 1 n − 1 ( u ) N_{i}^{n}(u) = \alpha_{i}^{n-1}N_{i}^{n-1}(u) + (1-\alpha_{i}^{n-1})N_{i+1}^{n-1}(u) Nin(u)=αin1Nin1(u)+(1αin1)Ni+1n1(u)

where
α i n − 1 = u − a i a i + n − a i \alpha_{i}^{n-1} = \frac{u-a_{i}}{a_{i+n}-a_{i}} αin1=ai+naiuai

Graphical Representation of B-Splines

N 0 0 ( u ) N_{0}^{0}(u) N00(u):
在这里插入图片描述

N 1 0 ( u ) N_{1}^{0}(u) N10(u):
N 1 0 ( u ) = N 0 0 ( u − 1 ) N_{1}^{0}(u) = N_{0}^{0}(u-1) N10(u)=N00(u1)
在这里插入图片描述

N 0 1 ( u ) N_{0}^{1}(u) N01(u):
N 0 1 ( u ) = α 0 0 N 0 0 ( u ) + ( 1 − α 1 0 ) N 1 0 ( u ) = u − a 0 a 1 − a 0 N 0 0 ( u ) + a 2 − a 1 − u + a 1 a 2 − a 1 N 0 0 ( u − 1 ) = u − a 0 a 1 − a 0 N 0 0 ( u ) + a 2 − u a 2 − a 1 N 0 0 ( u − 1 ) \begin{aligned} N_{0}^{1}(u) &amp;= \alpha_{0}^{0}N_{0}^{0}(u) + (1-\alpha_{1}^{0})N_{1}^{0}(u) \\ &amp;= \frac{u-a_{0}}{a_{1}-a_{0}}N_{0}^{0}(u) + \frac{a_{2}-a_{1}-u+a_{1}}{a_{2}-a_{1}}N_{0}^{0}(u-1) \\ &amp;= \frac{u-a_{0}}{a_{1}-a_{0}}N_{0}^{0}(u) + \frac{a_{2}-u}{a_{2}-a_{1}}N_{0}^{0}(u-1) \end{aligned} N01(u)=α00N00(u)+(1α10)N10(u)=a1a0ua0N00(u)+a2a1a2a1u+a1N00(u1)=a1a0ua0N00(u)+a2a1a2uN00(u1)
在这里插入图片描述

N 0 2 ( u ) N_{0}^{2}(u) N02(u):
N 0 2 ( u ) = α 0 1 N 0 1 ( u ) + ( 1 − α 1 1 ) N 1 1 ( u ) = u − a 0 a 2 − a 0 N 0 1 ( u ) + a 3 − a 1 − u + a 1 a 3 − a 1 N 0 1 ( u − 1 ) = u − a 0 a 2 − a 0 N 0 1 ( u ) + a 3 − u a 3 − a 1 N 0 1 ( u − 1 ) \begin{aligned} N_{0}^{2}(u) &amp;= \alpha_{0}^{1}N_{0}^{1}(u) + (1-\alpha_{1}^{1})N_{1}^{1}(u) \\ &amp;= \frac{u-a_{0}}{a_{2}-a_{0}}N_{0}^{1}(u) + \frac{a_{3}-a_{1}-u+a_{1}}{a_{3}-a_{1}}N_{0}^{1}(u-1) \\ &amp;= \frac{u-a_{0}}{a_{2}-a_{0}}N_{0}^{1}(u) + \frac{a_{3}-u}{a_{3}-a_{1}}N_{0}^{1}(u-1) \end{aligned} N02(u)=α01N01(u)+(1α11)N11(u)=a2a0ua0N01(u)+a3a1a3a1u+a1N01(u1)=a2a0ua0N01(u)+a3a1a3uN01(u1)
在这里插入图片描述

Properties of B-Splines
  1. N i n N_{i}^{n} Nin is piecewise polynomial of degree n.
  2. N i n ( u ) N_{i}^{n}(u) Nin(u) is piecewise polynomial of degree n.
  3. N i n ( u ) N_{i}^{n}(u) Nin(u) is positive in ( a i , a i + n + 1 ) (a_{i}, a_{i+n+1}) (ai,ai+n+1).
  4. N i n ( u ) N_{i}^{n}(u) Nin(u) is zero outside of ( a i , a i + n + 1 ) (a_{i}, a_{i+n+1}) (ai,ai+n+1).
  5. N i n ( u ) N_{i}^{n}(u) Nin(u) is right side continuous.
    在这里插入图片描述

N i n ( u ) N_{i}^{n}(u) Nin(u) 就是 u ∈ ( a i , a i + n + 1 ) u \in (a_{i},a_{i+n+1}) u(ai,ai+n+1)区间内,值大于 0 0 0 n n n次曲线; u ∉ ( a i , a i + n + 1 ) u \notin (a_{i},a_{i+n+1}) u/(ai,ai+n+1)时, N i n ( u ) = 0 N_{i}^{n}(u) = 0 Nin(u)=0

The De Boor algorithm

For u ∈ [ a n , a n + 1 ) u \in [a_{n},a_{n+1}) u[an,an+1):
s ( u ) = ∑ i = 0 n c i 0 N i n ( u ) = ∑ i = 0 n c i 0 [ α i n − 1 N i n − 1 ( u ) + ( 1 − α i + 1 n − 1 ) N i + 1 n − 1 ( u ) ] = c 0 0 α 0 n − 1 N 0 n − 1 ( u ) + c 0 0 ( 1 − α 1 n − 1 ) N 1 n − 1 ( u ) + c 1 0 α 1 n − 1 N 1 n − 1 ( u ) + c 1 0 ( 1 − α 2 n − 1 ) N 2 n − 1 ( u ) + … + c n − 1 0 α n − 1 n − 1 N n − 1 n − 1 ( u ) + c n − 1 0 ( 1 − α n n − 1 ) N n n − 1 ( u ) + c n 0 α n n − 1 N n n − 1 ( u ) + c n 0 ( 1 − α n + 1 n − 1 ) N n + 1 n − 1 ( u ) \begin{aligned} s(u) &amp;= \sum_{i=0}^{n}c_{i}^{0}N_{i}^{n}(u) = \sum_{i=0}^{n}c_{i}^{0}[\alpha_{i}^{n-1}N_{i}{n-1}(u) + (1-\alpha_{i+1}^{n-1})N_{i+1}^{n-1}(u)] \\ &amp;=c_{0}^{0}\alpha_{0}^{n-1}N_{0}^{n-1}(u) + c_{0}^{0}(1-\alpha_{1}^{n-1})N_{1}^{n-1}(u) + c_{1}^{0}\alpha_{1}^{n-1}N_{1}^{n-1}(u) + c_{1}^{0}(1-\alpha_{2}^{n-1})N_{2}^{n-1}(u) \\ &amp;+ \dots \\ &amp;+ c_{n-1}^{0}\alpha_{n-1}^{n-1}N_{n-1}^{n-1}(u) + c_{n-1}^{0}(1-\alpha_{n}^{n-1})N_{n}^{n-1}(u) + c_{n}^{0}\alpha_{n}^{n-1}N_{n}^{n-1}(u) + c_{n}^{0}(1-\alpha_{n+1}^{n-1})N_{n+1}^{n-1}(u) \end{aligned} s(u)=i=0nci0Nin(u)=i=0nci0[αin1Nin1(u)+(1αi+1n1)Ni+1n1(u)]=c00α0n1N0n1(u)+c00(1α1n1)N1n1(u)+c10α1n1N1n1(u)+c10(1α2n1)N2n1(u)++cn10αn1n1Nn1n1(u)+cn10(1αnn1)Nnn1(u)+cn0αnn1Nnn1(u)+cn0(1αn+1n1)Nn+1n1(u)

Since N 0 n − 1 ( u ) = 0 N_{0}^{n-1}(u) = 0 N0n1(u)=0 and N n + 1 n − 1 ( u ) = 0 N_{n+1}^{n-1}(u) = 0 Nn+1n1(u)=0, for u ∈ [ a n , a n + 1 ) u \in [a_{n},a_{n+1}) u[an,an+1). Thus:
s ( u ) = ∑ i = 1 n [ c i − 1 0 ( 1 − α i n − 1 ) + c i 0 α i n − 1 ] N i n − 1 ( u ) s(u) = \sum_{i=1}^{n}[c_{i-1}^{0}(1-\alpha_{i}^{n-1}) +c_{i}^{0}\alpha_{i}^{n-1}]N_{i}^{n-1}(u) s(u)=i=1n[ci10(1αin1)+ci0αin1]Nin1(u)

Let c i − 1 0 ( 1 − α i n − 1 ) + c i 0 α i n − 1 = c i 1 c_{i-1}^{0}(1-\alpha_{i}^{n-1}) +c_{i}^{0}\alpha_{i}^{n-1} = c_{i}^{1} ci10(1αin1)+ci0αin1=ci1, then:
s ( u ) = ∑ i = 1 n c i 1 N i n − 1 ( u ) = ∑ i = 2 n c i 2 N i n − 2 ( u ) … = ∑ i = n − 1 n c i n − 1 N i 1 ( u ) = ∑ i = n n c i n N i 0 ( u ) = c n n \begin{aligned} s(u) &amp;= \sum_{i=1}^{n}c_{i}^{1}N_{i}^{n-1}(u) \\ &amp;= \sum_{i=2}^{n}c_{i}^{2}N_{i}^{n-2}(u) \\ &amp;\dots \\ &amp;= \sum_{i=n-1}^{n}c_{i}^{n-1}N_{i}^{1}(u) \\ &amp;= \sum_{i=n}^{n}c_{i}^{n}N_{i}^{0}(u) \\ &amp;= c_{n}^{n} \end{aligned} s(u)=i=1nci1Nin1(u)=i=2nci2Nin2(u)=i=n1ncin1Ni1(u)=i=nncinNi0(u)=cnn
即(参考De Casteljau Algorithm):
f o r   i ∈ { 1 , … , n } c i 1 = c i − 1 0 ( 1 − α i n − 1 ) + c i 0 α i n − 1 f o r   i ∈ { 2 , … , n } c i 2 = c i − 1 1 ( 1 − α i n − 2 ) + c i 1 α i n − 2 … f o r   i ∈ { n − 1 , n } c i n − 1 = c i − 1 n − 2 ( 1 − α i 1 ) + c i n − 2 α i 1 f o r   i ∈ { n } c i n = c i − 1 n − 1 ( 1 − α i 0 ) + c i n − 1 α i 0 \begin{aligned} for \ i \in \{1,\dots,n\} \hspace{1cm} &amp;c_{i}^{1} = c_{i-1}^{0}(1-\alpha_{i}^{n-1}) + c_{i}^{0}\alpha_{i}^{n-1} \\ for \ i \in \{2,\dots,n\} \hspace{1cm} &amp;c_{i}^{2} = c_{i-1}^{1}(1-\alpha_{i}^{n-2}) + c_{i}^{1}\alpha_{i}^{n-2} \hspace{1cm} \\ &amp;\dots \\ for \ i \in \{n-1,n\} \hspace{1cm} &amp;c_{i}^{n-1} = c_{i-1}^{n-2}(1-\alpha_{i}^{1}) + c_{i}^{n-2}\alpha_{i}^{1} \\ for \ i \in \{n\} \hspace{1cm} &amp;c_{i}^{n} = c_{i-1}^{n-1}(1-\alpha_{i}^{0}) + c_{i}^{n-1}\alpha_{i}^{0} \\ \end{aligned} for i{1,,n}for i{2,,n}for i{n1,n}for i{n}ci1=ci10(1αin1)+ci0αin1ci2=ci11(1αin2)+ci1αin2cin1=ci1n2(1αi1)+cin2αi1cin=ci1n1(1αi0)+cin1αi0

对于 u ∈ [ a n , a n + 1 ) u \in [a_{n},a_{n+1}) u[an,an+1),如果Control Points c i 0 = 1 c_{i}^{0} = 1 ci0=1,且每层 α i \alpha_{i} αi均等于 α \alpha α,则:
s ( u ) = ∑ i = 0 n c i 0 N i n ( u ) = c n n = ∑ i = 0 0 ⟮ i 0 ⟯ c n − i n ( 1 − α ) i α 0 − i = c n − 1 n − 1 ( 1 − α ) + c n n − 1 α = ∑ i = 0 1 ⟮ i 1 ⟯ c n − i n − 1 ( 1 − α ) i α 1 − i = c n − 2 n − 2 ( 1 − α ) 2 + 2 c n − 1 n − 2 ( 1 − α ) α + c n n − 2 α 2 = ∑ i = 0 2 ⟮ i 2 ⟯ c n − i n − 2 ( 1 − α ) i α 2 − i = c n − 3 n − 3 ( 1 − α ) 3 + 3 c n − 2 n − 3 ( 1 − α ) 2 α + 3 c n − 1 n − 3 ( 1 − α ) α 2 + c n n − 3 α 3 = ∑ i = 0 3 ⟮ i 3 ⟯ c n − i n − 3 ( 1 − α ) i α 3 − i … = ∑ i = 0 n ⟮ i n c n − i 0 ( 1 − α ) i α n − i = [ ( 1 − α ) + α ] n = 1 \begin{aligned} s(u) &amp;= \sum_{i=0}^{n}c_{i}^{0}N_{i}^{n}(u) \\ &amp;= c_{n}^{n} = \sum_{i=0}^{0}\lgroup_{i}^{0} \rgroup c_{n-i}^{n}(1-\alpha)^{i} \alpha^{0-i} \\ &amp;= c_{n-1}^{n-1}(1-\alpha) + c_{n}^{n-1}\alpha = \sum_{i=0}^{1}\lgroup_{i}^{1} \rgroup c_{n-i}^{n-1}(1-\alpha)^{i} \alpha^{1-i} \\ &amp;= c_{n-2}^{n-2}(1-\alpha)^{2} + 2c_{n-1}^{n-2}(1-\alpha)\alpha + c_{n}^{n-2}\alpha^{2} = \sum_{i=0}^{2}\lgroup_{i}^{2} \rgroup c_{n-i}^{n-2}(1-\alpha)^{i} \alpha^{2-i} \\ &amp;= c_{n-3}^{n-3}(1-\alpha)^{3} + 3c_{n-2}^{n-3}(1-\alpha)^{2}\alpha + 3c_{n-1}^{n-3}(1-\alpha)\alpha^{2} + c_{n}^{n-3}\alpha^{3} = \sum_{i=0}^{3}\lgroup_{i}^{3} \rgroup c_{n-i}^{n-3}(1-\alpha)^{i} \alpha^{3-i} \\ &amp;\dots \\ &amp;= \sum_{i=0}^{n} \lgroup_{i}^{n}c_{n-i}^{0}(1-\alpha)^{i}\alpha^{n-i} = [(1-\alpha) + \alpha]^{n} = 1 \end{aligned} s(u)=i=0nci0Nin(u)=cnn=i=00i0cnin(1α)iα0i=cn1n1(1α)+cnn1α=i=01i1cnin1(1α)iα1i=cn2n2(1α)2+2cn1n2(1α)α+cnn2α2=i=02i2cnin2(1α)iα2i=cn3n3(1α)3+3cn2n3(1α)2α+3cn1n3(1α)α2+cnn3α3=i=03i3cnin3(1α)iα3i=i=0nincni0(1α)iαni=[(1α)+α]n=1

Thus, B-Splines N i n ( u ) N_{i}^{n}(u) Nin(u) form the partition of unity, for u ∈ [ a n , a n + 1 ) u \in [a_{n},a_{n+1}) u[an,an+1).
在这里插入图片描述

对于 s ( u ) , n = 3 s(u), n=3 s(u),n=3 s ( u ) s(u) s(u) u ∈ [ a n , a n + 1 ) u \in [a_{n},a_{n+1}) u[an,an+1)区间内就是一个Bezier Curve(以 c 0 0 c_{0}^{0} c00 c 1 0 c_{1}^{0} c10 c 2 0 c_{2}^{0} c20 c 3 0 c_{3}^{0} c30为Control Points)。

B-Spline Properpties
  1. The B-Splines of degree n n n with a given knot sequence that do not varnish over some knot interval are linearly independent over this interval.

  2. Adimension count shows that the B-Splines N 0 n , … , N m n N_{0}^{n}, \dots, N_{m}^{n} N0n,,Nmn with the knots a 0 , … , a m + n + 1 a_{0}, \dots, a_{m+n+1} a0,,am+n+1 form a basis for all splines of degree n n n with support [ a 0 , a m + n + 1 ] [a_{0}, a_{m+n+1}] [a0,am+n+1] and the same knots.

  3. Similarly, the B-Splines N 0 n , … , N m n N_{0}^{n}, \dots, N_{m}{n} N0n,,Nmn over the knots a 0 , … , a m + n + 1 a_{0}, \dots, a_{m+n+1} a0,,am+n+1 restricted to the interval [ a 0 , a m + n + 1 ] [a_{0}, a_{m+n+1}] [a0,am+n+1] form a basis for all splines of degree n n n restricted to the same interval.

  4. The B-Splines of degree n n n form a partition of unity , i.e.,

∑ i = 0 m = N i n ( u ) = 1 f o r   u ∈ [ a n , a m + 1 ) \sum_{i=0}^{m} = N_{i}^{n}(u) = 1 \hspace{1cm} for \ u \in [a_{n}, a_{m+1}) i=0m=Nin(u)=1for u[an,am+1)

  1. A spline s [ a n , a m + 1 ) s[a_{n}, a_{m+1}) s[an,am+1) of degree n n n with n-fold end knots,

( a 0 = ) a 1 = ⋯ = a n a n d a m + 1 = ⋯ = a m + n ( = a m + n + 1 ) (a_{0} =) a_{1} = \dots = a_{n} \hspace{1cm} and \hspace{1cm} a_{m+1} = \dots = a_{m+n} (= a_{m+n+1}) (a0=)a1==anandam+1==am+n(=am+n+1)

have the same end points and end tangents as its control polygon.

  1. The end knots a 0 a_{0} a0 and a m + n + 1 a_{m+n+1} am+n+1 have no influences on N 0 n N_{0}^{n} N0n and N m n N_{m}^{n} Nmn over the interval [ a n , a m + 1 ) [a_{n}, a_{m+1}) [an,am+1).
  2. The B-Splines are postive over the interior of the support,

N i n ( u ) &gt; 0 f o r   u ∈ ( a i , a i + n + 1 ) N_{i}^{n}(u) \gt 0 \hspace{1cm} for \ u \in(a_{i}, a_{i+n+1}) Nin(u)>0for u(ai,ai+n+1)

  1. The B-Splines have compact support,

S u p p   N i n = [ a i , a i + n + 1 ] Supp\ N_{i}^{n} = [a_{i}, a_{i+n+1}] Supp Nin=[ai,ai+n+1]

  1. The B-Splines satisfy the de Boor, Mansfield, Cox recursion formula

N i n ( u ) = α i n − 1 N i n − 1 ( u ) + ( 1 − α i + 1 n − 1 ) N i + 1 n − 1 ( u ) N_{i}^{n}(u) = \alpha_{i}^{n-1}N_{i}^{n-1}(u) + (1-\alpha_{i+1}^{n-1})N_{i+1}^{n-1}(u) Nin(u)=αin1Nin1(u)+(1αi+1n1)Ni+1n1(u)

where α i n − 1 = u − a i a n + 1 − a i \alpha_{i}^{n-1} = \frac{u-a_{i}}{a_{n+1}-a_{i}} αin1=an+1aiuai represents the local parameter over the support of N i n − 1 N_{i}^{n-1} Nin1.

  1. The derivative of a single B-Spline is given by

d d u N i n ( u ) = n u i + n − u i N i n − 1 ( u ) − n u i + n + 1 − u i + 1 N i + 1 n − 1 ( u ) \frac{d}{du}N_{i}^{n}(u) = \frac{n}{u_{i+n}-u_{i}}N_{i}^{n-1}(u) - \frac{n}{u_{i+n+1}-u_{i+1}}N_{i+1}^{n-1}(u) dudNin(u)=ui+nuinNin1(u)ui+n+1ui+1nNi+1n1(u)

  1. The B-Spline representation of a spline curve is invariant under affine maps.
  2. Any segment s j [ a j , a j + 1 ] s_{j}[a_{j},a_{j+1}] sj[aj,aj+1] of an n-th degree spline lines in the convex hull of its n + 1 n+1 n+1 control point c j − n , … , c j c_{j-n}, \dots, c_{j} cjn,,cj.
Conversion to B-Spline form

Since any polynomial of degree n n n can be viewed as spline of degree n n n or high with an arbitrary sequence of knots, one can express the monomials as linear combinations of B-Splines over any knot sequence ( a i a_{i} ai).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值