B-Spline Curve

B-Spline Representation

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

Let a i a_{i} be a biinfinite and strictly increasing sequence of knots, which means a i < a i + 1 a_{i} \lt a_{i+1} , for all i i . We define the B-Splines N i n N_{i}^{n} 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}

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)

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}}

Graphical Representation of B-Splines

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

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

N 0 1 ( u ) N_{0}^{1}(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) &= \alpha_{0}^{0}N_{0}^{0}(u) + (1-\alpha_{1}^{0})N_{1}^{0}(u) \\ &= \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) \\ &= \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}
在这里插入图片描述

N 0 2 ( u ) N_{0}^{2}(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) &= \alpha_{0}^{1}N_{0}^{1}(u) + (1-\alpha_{1}^{1})N_{1}^{1}(u) \\ &= \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) \\ &= \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}
在这里插入图片描述

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

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

The De Boor algorithm

For u [ a n , a n + 1 ) u \in [a_{n},a_{n+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) &= \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)] \\ &=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) \\ &+ \dots \\ &+ 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}

Since N 0 n 1 ( u ) = 0 N_{0}^{n-1}(u) = 0 and N n + 1 n 1 ( u ) = 0 N_{n+1}^{n-1}(u) = 0 , for u [ a n , a n + 1 ) u \in [a_{n},a_{n+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)

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} , 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) &= \sum_{i=1}^{n}c_{i}^{1}N_{i}^{n-1}(u) \\ &= \sum_{i=2}^{n}c_{i}^{2}N_{i}^{n-2}(u) \\ &\dots \\ &= \sum_{i=n-1}^{n}c_{i}^{n-1}N_{i}^{1}(u) \\ &= \sum_{i=n}^{n}c_{i}^{n}N_{i}^{0}(u) \\ &= c_{n}^{n} \end{aligned}
即(参考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} &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} &c_{i}^{2} = c_{i-1}^{1}(1-\alpha_{i}^{n-2}) + c_{i}^{1}\alpha_{i}^{n-2} \hspace{1cm} \\ &\dots \\ for \ i \in \{n-1,n\} \hspace{1cm} &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} &c_{i}^{n} = c_{i-1}^{n-1}(1-\alpha_{i}^{0}) + c_{i}^{n-1}\alpha_{i}^{0} \\ \end{aligned}

对于 u [ a n , a n + 1 ) u \in [a_{n},a_{n+1}) ,如果Control Points c i 0 = 1 c_{i}^{0} = 1 ,且每层 α i \alpha_{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) &= \sum_{i=0}^{n}c_{i}^{0}N_{i}^{n}(u) \\ &= c_{n}^{n} = \sum_{i=0}^{0}\lgroup_{i}^{0} \rgroup c_{n-i}^{n}(1-\alpha)^{i} \alpha^{0-i} \\ &= 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} \\ &= 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} \\ &= 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} \\ &\dots \\ &= \sum_{i=0}^{n} \lgroup_{i}^{n}c_{n-i}^{0}(1-\alpha)^{i}\alpha^{n-i} = [(1-\alpha) + \alpha]^{n} = 1 \end{aligned}

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

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

B-Spline Properpties
  1. The B-Splines of degree 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} with the knots a 0 , , a m + n + 1 a_{0}, \dots, a_{m+n+1} form a basis for all splines of degree n n with support [ a 0 , a m + n + 1 ] [a_{0}, a_{m+n+1}] and the same knots.

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

  4. The B-Splines of degree 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})

  1. A spline s [ a n , a m + 1 ) s[a_{n}, a_{m+1}) of degree 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})

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

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

N i n ( u ) > 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})

  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}]

  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)

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}} represents the local parameter over the support of N i n 1 N_{i}^{n-1} .

  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)

  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}] of an n-th degree spline lines in the convex hull of its n + 1 n+1 control point c j n , , c j c_{j-n}, \dots, c_{j} .
Conversion to B-Spline form

Since any polynomial of degree n n can be viewed as spline of degree 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} ).

猜你喜欢

转载自blog.csdn.net/u012841922/article/details/89186158