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 < 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)=αin−1Nin−1(u)+(1−αin−1)Ni+1n−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}}
αin−1=ai+n−aiu−ai
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(u−1)
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) &= \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}
N01(u)=α00N00(u)+(1−α10)N10(u)=a1−a0u−a0N00(u)+a2−a1a2−a1−u+a1N00(u−1)=a1−a0u−a0N00(u)+a2−a1a2−uN00(u−1)
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) &= \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}
N02(u)=α01N01(u)+(1−α11)N11(u)=a2−a0u−a0N01(u)+a3−a1a3−a1−u+a1N01(u−1)=a2−a0u−a0N01(u)+a3−a1a3−uN01(u−1)
Properties of B-Splines
- N i n N_{i}^{n} Nin is piecewise polynomial of degree n.
- N i n ( u ) N_{i}^{n}(u) Nin(u) is piecewise polynomial of degree n.
- 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).
- 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).
-
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) &= \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}
s(u)=i=0∑nci0Nin(u)=i=0∑nci0[αin−1Nin−1(u)+(1−αi+1n−1)Ni+1n−1(u)]=c00α0n−1N0n−1(u)+c00(1−α1n−1)N1n−1(u)+c10α1n−1N1n−1(u)+c10(1−α2n−1)N2n−1(u)+…+cn−10αn−1n−1Nn−1n−1(u)+cn−10(1−αnn−1)Nnn−1(u)+cn0αnn−1Nnn−1(u)+cn0(1−αn+1n−1)Nn+1n−1(u)
Since
N
0
n
−
1
(
u
)
=
0
N_{0}^{n-1}(u) = 0
N0n−1(u)=0 and
N
n
+
1
n
−
1
(
u
)
=
0
N_{n+1}^{n-1}(u) = 0
Nn+1n−1(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=1∑n[ci−10(1−αin−1)+ci0αin−1]Nin−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}
ci−10(1−αin−1)+ci0αin−1=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) &= \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}
s(u)=i=1∑nci1Nin−1(u)=i=2∑nci2Nin−2(u)…=i=n−1∑ncin−1Ni1(u)=i=n∑ncinNi0(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} &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}
for i∈{1,…,n}for i∈{2,…,n}for i∈{n−1,n}for i∈{n}ci1=ci−10(1−αin−1)+ci0αin−1ci2=ci−11(1−αin−2)+ci1αin−2…cin−1=ci−1n−2(1−αi1)+cin−2αi1cin=ci−1n−1(1−αi0)+cin−1α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) &= \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}
s(u)=i=0∑nci0Nin(u)=cnn=i=0∑0⟮i0⟯cn−in(1−α)iα0−i=cn−1n−1(1−α)+cnn−1α=i=0∑1⟮i1⟯cn−in−1(1−α)iα1−i=cn−2n−2(1−α)2+2cn−1n−2(1−α)α+cnn−2α2=i=0∑2⟮i2⟯cn−in−2(1−α)iα2−i=cn−3n−3(1−α)3+3cn−2n−3(1−α)2α+3cn−1n−3(1−α)α2+cnn−3α3=i=0∑3⟮i3⟯cn−in−3(1−α)iα3−i…=i=0∑n⟮incn−i0(1−α)iαn−i=[(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
-
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.
-
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.
-
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.
-
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=0∑m=Nin(u)=1for u∈[an,am+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.
- 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).
- 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}) Nin(u)>0for u∈(ai,ai+n+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]
- 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)=αin−1Nin−1(u)+(1−αi+1n−1)Ni+1n−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}} αin−1=an+1−aiu−ai represents the local parameter over the support of N i n − 1 N_{i}^{n-1} Nin−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+n−uinNin−1(u)−ui+n+1−ui+1nNi+1n−1(u)
- The B-Spline representation of a spline curve is invariant under affine maps.
- 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} cj−n,…,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).