# What Is The Knot Vector?

1. Apr 3, 2013

### mymachine

Could anybody tell me what is meant by the knot vector and how to find its value?

I read in the book, the value is 0,0,0,1,1,1,4,4,6,6.

Also, I think none of the curves-and-surfaces-for-CAGD related textbooks, most of them, I read from library, are not giving information, absolutely, of how to find the value of the knot vector.

How could I solve the basic B-spline and NURBS function if I couldn't find the value of the knot vector as them are required to solve the function?

2. Apr 3, 2013

### HallsofIvy

"Knots" occur in piece-wise defined functions. If, for example, you want want to approximate a complicated function by a "piece-wise linear fuction", a "piece-wise quadratic function", or a "cubic spline" (a particular type of piece-wise cubic function), then the points where the "pieces" join are the "knots". And the "knot vector" is an array having the x values of those knots as entries.

3. Apr 3, 2013

### mymachine

OK, I know the value of the knot vector is the value of the point in the x-axis of the cartesian coordinate, where the pieces are join.

Also, I know the knot vector is only available in the linear function, am I right?

However, I still do not understand.

What I had read in my book is, the knots and its value have to be determined at the beginning, before I couldn't even know how the graph of the linear function is looks like.

This is impossible.

This is like a wizard that could see what will happen in the future?

Now I would like trying to solve the B-spline function where the control points are:

c0 = (0,0)
c1 = (2,3)
c2 = (4,4)
c3 = (8,3)
c4 = (9,1)

By following the example in my book, what I need is the value of the degree d, and the sequence of the knots k0, k1, ..., kn.

And first I should solve the linear function.

Could you please tell me what is the value of the degree and the knots?

Thank you

4. May 13, 2013

### timthereaper

The recursive B-spline basis functions use the knot vector to determine what their final shapes are. For example, the step functions that form the "base case" for the recursion (the "zeroth" order) are 1 over the interval from one knot value to the next, and 0 everywhere else. For example, a knot vector like [0 0 0 0 1 2 2 2 2] would consist of 8 step functions: 3 of which are 1 from [0,0) and 0 everywhere else, 1 of which are 1 from [0,1) and 0 everywhere else, 1 of which are 1 from [1,2) and 0 everywhere else, and 3 of which are 1 from [2,2) and 0 everywhere else. The next "set" of basis functions (the "1st" order) linearly interpolate between two of the basis functions over the interval, which makes them form triangular functions instead of step-wise functions. The interpolation yields 7 functions instead of 8. The next "set" of functions (the "2nd" order) linearly interpolate from those, yielding 6 functions. The last "set" of basis functions are "3rd" order linearly interpolate from the "2nd" order, yielding 5 basis functions. Since we have 5 basis functions, we need 5 control points to define this cubic B-spline.

Knot insertion just establishes 1 more step function at the "base case". In this example, if we added another knot at 1, we'd get the knot vector [0 0 0 0 1 1 2 2 2 2]. Thus, we'd add another step function that is 1 over the interval [1,1) and 0 everywhere else. Like above, we'd have 9 step functions, 8 "1st order" functions, 7 "2nd order" functions, and 6 "3rd order" functions. Thus, we'd need 6 control points for this cubic B-spline, but those can be determined from the existing 5 control points.

If you don't feel comfortable with the recursive nature of the B-spline functions, you can view a B-spline as a machine that generates Bezier curves of the same degree as the B-spline with a certain degree of continuity between them. In our above example, the cubic B-spline with knot vector [0 0 0 0 1 2 2 2 2] is really just 2 cubic Bezier curves with C2 continuity between them. The control points of those Bezier curves can be found by inserting multiple knots (Cox-de Boor algorithm) until we reach the knot vector [0 0 0 0 1 1 1 2 2 2 2].

If you're interested, Dr. Lyle Ramshaw's "polar form" notation helps show the effect the knot vector has on the underlying B-spline.