Take the 2-minute tour ×
Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. It's 100% free, no registration required.

I read a little about NURBS curves (specifically from http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/), and I have a couple of questions about the motivation behind the choices made in designing the basis functions.

My current understanding is that, given input knot vector, weights, control points (say we are 1-dimensional as the generalization to higher dimensional curves or surfaces doesn't appear to be a difficulty) and degree, we have basis functions $B_{1},\ldots,B_{n}$ such that each basis function looks like a bump function and the basis functions are a partition of unity. Furthermore, if we assume that knot vector doesn't have multiplicity, then each basis function is in class $C^{d}$, where $d$ is the degree.

My questions are below:

1) The notes say that the support of $B_{i}$ is going to be $d$ intervals in the knot vector. So the support of $B_{i}$ is going to be increasing in the degree $d$. In particular, this seems to me like the curve produced is going to be less local in its dependence on the control points.

By this, I mean that if I move a control point $x_{i}$, then the curve near $x_{i-\lfloor d/2\rfloor},\ldots,x_{i+\lfloor d/2\rfloor}$ are all going to move (whatever the precisely statement is, the interval of control points grows linearly in $d$). Now, this seems like a bad thing, as I would assume we want to have the curve closely approximate the control points and making the curve depend on an interval of control points instead of the closest control point makes this harder.

However, it doesn't seem like a difficult task to make the support of $B_{i}$ smaller, say only two intervals in the knot vector, while still maintaining that it is in class $C^{d}$. I'm sure somebody has thought about this, but I can't find this easily. Why don't people do this?

2) There are examples of bump functions in basic analysis that are $C^{\infty}$. These won't be rational functions like the NURBS basis functions, but why don't we use $C^{\infty}$ bump functions as basis functions? It seems to me that when we increase the degree of the NURBS basis functions, we approximate the control points less closely so we have more regularity (differentiability). But if we use $C^{\infty}$ bump functions, we get a smooth curve.

Thanks for your time.

share|improve this question
add comment

1 Answer

up vote 1 down vote accepted

You are right -- increasing degree makes the support of the basis functions wider, so editing becomes more global, less local. This isn't necessarily a bad thing. In fact, people who design very high quality curves typically use Bezier curves (curves that have only one b-spline segment; order = number of control points). With these curves, moving a control point will move every point of the curve (except maybe the end-points). If the system lets you make local edits, then it's very easy to introduce "bumps", i.e. localized regions where the curvature is very different from what it is elsewhere. For high quality curve design, this is highly undesirable, obviously.

Why don't people use (non-polynomial) $C^{\infty}$ basis functions? Well, the basis functions used in the Bezier curves I mentioned above are $C^{\infty}$, because they are polynomials (Bernstein polynomials, actually). In the CAD industry (which is where NURBS are used most, I guess), you can't just make up your own new types of curves, with new types of basis functions. People who use CAD systems often have to exchange data with other people who use other CAD systems, and NURBS are the standard exchange medium -- every system uses them. The benefits of standardisation and easy data exchange far out-weigh any benefits that could be gained by using some exotic new form of curve.

So, people who develop CAD software focus on new/better ways to construct NURBS curves and surfaces, not on making up new types of geometry.

share|improve this answer
add comment

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.