Search code examples
pythoninterpolationbspline

Does the B-spline pass through the control points?


The content and pictures on Wikipedia indicate that the B-spline does not pass through the control point, and the information I found elsewhere is the same as the content on Wikipedia. However, spline interpolation can be performed in scipy.interpolate, such as interp1d 'cubic' or splrep splev(the two operations should be similar Difference between quadratic and 2nd order spline interpolation in scipy). Through drawing, I found that the curve passed all control points. But the documentation and library code show that the basis of these operations is B-spline.

I am deeply confused about this now. I know that B-spline is a kind of spline, and there are many kinds of spline interpolation besides B-spline interpolation, such as natural cubic spline interpolation and cubic Hermitian interpolation.

My current problem:

  1. The relationship between spline curve and spline interpolation. Does the spline interpolation always pass through all control points?
  2. Are B-spline and B-spline interpolation and cubic spline interpolation the same?
  3. Will B-spline interpolation pass through control points?

Solution

    1. Unlike Bezier curves B-splines do not generally pass through the end control pointsMIT discussion, however clamped B-splines do Clamped B-splines

    2. B-splines are splines made up of Basis functions. B-spline interpolation is a method of evaluating the B-spline to find the exact point it goes to. Cubic B-splines are a type of B-spline with the polynomial order 3.

    3. If you place enough control points on top of one another the spline becomes clamped and will pass through those control points. The number of knots that are needed at the end point is dependent on the order of the curve and breaks down the continuity of the curve at that point.