B-Spline

For a B-spline, the curve does not neccessarily pass through any control point, but it is C(0), C(1), and C(2) continuous at the curve segment end points. Therefore, a B-spline curve is "smoother" than either the Hermite or Bezier curves.

as before : x(t) = TMSG Sx with Ms as below:

         |-1  3 -3 1|
MS = 1/6 | 3 -6  3 0|
         |-3  0  3 0|
         | 1  4  1 0| 

TMS = 1/6 [(-t^3 + 3t^2 - 3t +1)(+3t^3 - 6t^2 + 4)(-3t^3 + 3t^2 + 3t +1)(t^3)]

Note for:

t = 0 TMS = 1/6 [(1)(4)(1)(0)]
t = 1 TMS = 1/6 [(0)(1)(4)(1)]
so the curve position is never determined by any single point, in contrast to the Hermite and Bezier curves.

For B-Spline we use a different Geometry matrix between each pair of adjacent points.

That is:

Gsx = Gsxi = |Pi-1|
            |Pi |
            |Pi+1|
            |Pi+2|

Proof that B-splines are C(0), C(1), and C(2) continuous

{for Point i}

Look at C(1), C(2) continuity for GSx = GSxi at t =1

xi(1) = (xi + 4xi+1 + xi+2)/6

d(TMS)/dt = 1/6[(-3t2 + 6t - 3) (9t2-12t) (-9t2 +6t +3) (3t2)]

d2(TMS)/dt2 = 1/6[(-6t + 6) (18t -12) (-18t + 6) (6t)]

so dxi /dt|t=1 = (-3xi + 3xi+2)/6 = (-xi + xi+2)/2

d2xi /dt|t=1 = (6xi - 12xi+1 + 6xi+2 )/6

= xi - 2xi+1 + xi+2

Now repeat Process for next Point, i.e. GSx = GSxi+1 and evaluate at t = 0

xi+1(0) = 1/6[(1)(4)(1)(0)] Pi+1x

= 1/6(xi + 4xi+1 + xi+2)

dxi+1/dt|t=0 = 1/6[((-3)(0)(+3)(0))]Pi+1x

= (-xi + xi+2 )/2

d2x i+1 /dt| t=0 = xi - 2xi+1 + xi+2

therefore, C(0), C(1), C(2) continuous

A program illustrating B Splines.


Splines main page
HyperGraph Table of Contents.
HyperGraph Home page.

Last changed June 22, 1999, G. Scott Owen, owen@siggraph.org