Exact interpolation of points with B/U-Splines

Say I want to find a B/U-Spline that exactly interpolates some points. How would one go about doing that? Note that in this question, when I say B-Spline I don’t mean the canonical B-Splines, but rather B-Splines made via the U-Spline algorithm. My guesses:

  1. Bezier Projection magic
  2. Create an interpolatory spline (such as Lagrange spline) and then convert either to a B-Spline or first a Bezier spline then to a B-Spline

For example, say I want a B-Spline to exactly pass through these points:

x,     y 
0.,    0.
0.349, 0.342
0.698, 0.643
1.047, 0.866
1.396, 0.985
1.745, 0.985

I would assume you could fit B-Splines of uniform degree up to N-1, as well as mixed degree B-Splines? What about smoothnesses?

Inspiration for this question comes from this publicly available document.

The B-spline (or U-spline basis) is not interpolatory but this says nothing about the ability of a curve (or surface) to interpolate an appropriate set of points. This is easiest to do for a set of points that define a curve. If you have a list of points in a specific order in which you wish for the curve to pass through them (the curve will hit the second point in the list before the third, etc) then it is simple to construct a linear system and solve for the control points that produce a curve that passes through each point. In general, you need one point per basis function. You could also specify the derivatives or other quantities at the points. The number of linearly independent constraints must be equal to the number of basis functions. If you have more constraints then you will get a least-squares type fit and if you have less then some type of minimization principle is often incorporated such as minimizing bending energy.

As for interpolatory splines, Hermite splines are often used for data fitting. Once an Hermite spline has been computed it is straight forward to compute a B/U-spline representation. Bezier projection can be applied here. One simple algorithm would be to apply the Hermite interpolation algorithm to each interval and then immediately use Bezier projection to compute the contribution to the final spline representation.

To answer your specific question about the small set of points that you gave, you would need to compute a basis with exactly the same number of functions as you have points. There is a method for constructing an appropriate linear system to solve for the control points. This is actually one of the advantages of splines that was appreciated early on. In the early 20th venture, Runge showed that increasing the polynomial degree to provide enough functions (DOFs) to interpolate a given set of points does not always produce a decrease in error of the resulting curve. This is know as Runge’s phenomenon. Splines allow you to increase the available number of degrees of freedom without this issue. You merely add more knots to the knot vector.

1 Like