Knot Vector Generation for B-Spline Interpolation

This Demonstration is concerned with the problem of interpolating a given point set by a B-spline curve. We illustrate the influence of different choices for the curve's knot vector and parameter vector. The quality of the interpolation varies dramatically depending on these choices, and certain combinations lead to highly oscillating interpolants. A uniform knot vector combined with a chordal parameter vector often yields oscillations or erratic behavior (red curve). Combining a uniform knot vector with a centripetal parameter vector improves the result a bit (blue curve), but the best result is obtained for an average knot vector combined with a chordal (or centripetal) parameter vector (green curve).


  • [Snapshot]
  • [Snapshot]
  • [Snapshot]


One of the basic tasks in reverse engineering is curve reconstruction from a set of measured points. A frequently used tool for this purpose is B-spline interpolation.
A degree B-spline curve defined by its control polygon reads
where , are the B-spline basis functions (see B-Spline). They depend on the knot vector
, where and .
Given a point set , , …, and an associated parameter vector , where , the interpolation problem thus consists of determining the control polygon as the solution of the following system of linear equations,
, for .
This polygon and thus the curve depend on the knot and parameter vectors. Well-known choices for the parameter vector are:
• the chordal distribution:
where .
• the centripetal distribution:
where and is often chosen equal to .
A common choice for the knot vector is obtained by uniformly spacing the internal knots, for example on the interval :
(The knot vector generated by the Mathematica option SplineKnotsAutomatic is uniformly spaced.)
But for numerical reasons, it is not recommended to combine a uniform knot vector with a chordal parameter vector because that could generate an unstable or singular system of linear equations (see "Knot Vector Generation" in [1]). To avoid this problem, it is better to adapt the knot vector to the parameter vector, for example by using the average method:
[1] C.-K. Shene, Introduction to Computing with Geometry Notes. (Aug 22, 2011) http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/notes.html.
    • Share:

Embed Interactive Demonstration New!

Just copy and paste this snippet of JavaScript code into your website or blog to put the live Demonstration on your site. More details »

Files require Wolfram CDF Player or Mathematica.

Mathematica »
The #1 tool for creating Demonstrations
and anything technical.
Wolfram|Alpha »
Explore anything with the first
computational knowledge engine.
MathWorld »
The web's most extensive
mathematics resource.
Course Assistant Apps »
An app for every course—
right in the palm of your hand.
Wolfram Blog »
Read our views on math,
science, and technology.
Computable Document Format »
The format that makes Demonstrations
(and any information) easy to share and
interact with.
STEM Initiative »
Programs & resources for
educators, schools & students.
Computerbasedmath.org »
Join the initiative for modernizing
math education.
Step-by-Step Solutions »
Walk through homework problems one step at a time, with hints to help along the way.
Wolfram Problem Generator »
Unlimited random practice problems and answers with built-in step-by-step solutions. Practice online or make a printable study sheet.
Wolfram Language »
Knowledge-based programming for everyone.
Powered by Wolfram Mathematica © 2018 Wolfram Demonstrations Project & Contributors  |  Terms of Use  |  Privacy Policy  |  RSS Give us your feedback
Note: To run this Demonstration you need Mathematica 7+ or the free Mathematica Player 7EX
Download or upgrade to Mathematica Player 7EX
I already have Mathematica Player or Mathematica 7+