What is a Knot Vector and How Do You Find Its Value?

  • Thread starter Thread starter mymachine
  • Start date Start date
  • Tags Tags
    Vector
Click For Summary
SUMMARY

The knot vector is a critical component in B-spline and NURBS functions, representing the x-values where piecewise-defined functions join. In the discussion, a specific knot vector example is provided: [0, 0, 0, 1, 1, 1, 4, 4, 6, 6]. The value of the degree for the B-spline function is determined by the number of control points minus one, and the knot vector must be established before graphing the function. The recursive nature of B-spline basis functions relies on the knot vector to define their shapes, with the Cox-de Boor algorithm being essential for knot insertion and manipulation.

PREREQUISITES
  • Understanding of B-spline and NURBS concepts
  • Familiarity with the Cox-de Boor algorithm
  • Knowledge of piecewise-defined functions
  • Basic grasp of control points in spline functions
NEXT STEPS
  • Study the Cox-de Boor algorithm for knot insertion
  • Learn about B-spline degree determination and its implications
  • Explore the relationship between control points and B-spline curves
  • Investigate Dr. Lyle Ramshaw's polar form notation for B-splines
USEFUL FOR

Mathematicians, computer graphics developers, and anyone involved in geometric modeling or computer-aided design (CAD) who seeks to understand the intricacies of B-splines and NURBS functions.

mymachine
Messages
42
Reaction score
0
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.

Well, I read 7 books already.

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?
 
Physics news on Phys.org
"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.
 
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
 
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.
 

Similar threads

  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 11 ·
Replies
11
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 3 ·
Replies
3
Views
4K
  • · Replies 4 ·
Replies
4
Views
3K
Replies
1
Views
1K
Replies
5
Views
3K
Replies
1
Views
2K
  • · Replies 3 ·
Replies
3
Views
1K
  • · Replies 7 ·
Replies
7
Views
1K