Uniform curve versus non-rational curve

Rhino documentation ( https://docs.mcneel.com/rhino/7/help/en-us/information/subdfriendly.htm ) says: A NURBS curve is SubD friendly if… it is uniform, it is non-rational…

Is there any difference between uniform curve and non-rational curve?


If a list of knots starts with a full multiplicity knot, is followed by simple knots, terminates with a full multiplicity knot, and the values are equally spaced, then the knots are called uniform. For example, if a degree 3 NURBS curve with 7 control points has knots 0,0,0,1,2,3,4,4,4, then the curve has uniform knots. The knots 0,0,0,1,2,5,6,6,6 are not uniform. Knots that are not uniform are called non‑uniform. The N and U in NURBS stand for non‑uniform and indicate that the knots in a NURBS curve are permitted to be non-uniform.


The control points have an associated number called a weight . With a few exceptions, weights are positive numbers. When a curve’s control points all have the same weight (usually 1), the curve is called non-rational, otherwise the curve is called rational. The R in NURBS stands for rational and indicates that a NURBS curve has the possibility of being rational. In practice, most NURBS curves are non-rational. A few NURBS curves, circles and ellipses being notable examples, are always rational.

To expand on Helvetosaur’s response, curves can be:

Non-rational and uniform
Non-rational and non-uniform
Rational and uniform
Rational and non-uniform

The Curve command and Rebuild commands always result in non-rational and uniform curves. InterpCrv and CurveThroughPoints result in non-rational and uniform curves if the Knots=Uniform option is selected. Interpcrv and CurveThoughPoints result non-rational and non-uniform curves if the the Knot=Chord or Knots=SqrtChord options are selected.

Conic curves such as circles, ellipses, arcs, parabolas and hyperbolas are rational. One reason for the popularity of NURBS curves in CAD is that conic curves can be represented exactly by rational curve.

Uniform curves can become non-uniform by adding/removing knots.

Non-rational curves can become rational by modifying the weights.

1 Like

You are correct - there is no simple answer. (I already knew the complex answer, but I was hoping that simple answer exists.) This old demo illustrates NURBS well: http://geometrie.foretnik.net/files/NURBS-en.swf

Are you sure that they are uniform?

the space between the nodes defined if the curve is uniform or not.
in the case of equal spacing the curve is uniform.
and vice versa, if the space is not equal, the curves are called non-uniform.
for the curves (rational). the weight of the control points is not identical

Mistake. Should read nterpcrv and CurveThoughPoints result non-rational and non-uniform curves if the the Knot=Chord or Knots=SqrtChord options are selected… I’ll correct it.

Uniform vs non-uniform refers to the spacing of the knots in parameter, not physical, space. A curve with uniform knots can have non-uniform physical distance between knots and vice-versa.

thank you for correcting my mistake i didnt know that mathematical spacing is all different from physical spacing in curve …I just did a little test on rhino

it still remains a myster for me
… I can’t understand what this means

NURBS curves are parametric, the domain of a curve is the range of numbers from the start parameter to the end parameter. To start with this is often from 0 at the start to n where n is the length of the curve in file units - however this is possible to change. Often for programming purposes the curve domain is reset so that it goes from 0 (start) to 1 (end). This can facilitate a number of operations involving curve parameters.

1 Like

thank you Helvetosaurus for the explanation

Each point on a NURBS curve has a unique value of the parameter associated with it. Plug that value of the parameter into the equations for the curve (along with the control point coordinates) and the coordinates of the point can be calculated.

Knots are the points at the beginning/ends of “spans” within a NURBS curves. For each knot there is an associated parameter value. If the increments in parameter values of the knots are equal then the curve is uniform. (There are additional knots at the ends of NURBS curves which are added for computational reasons. These additional knots do no affect whether the curve is uniform or non-uniform.)

1 Like

Example of uniform knots from Helvetosaur’s post: 0,0,0,1,2,3,4,4,4.
Domain = range between the first and the last knot = 0 to 4.
Delta = difference between adjacent knots = 1.
Take a look at the old demo if you want to understand details.

1 Like

thanks andrew
I see roughly what that means.
despite I am not too comfortable with mathematics :face_with_head_bandage:
I can only understand in rhino, if the curve has multiple knots … it is non-uniform

Non Rational Uniform B Splines

Hello - this is not the case. It is true that a single span curve, i.e. with no internal knots, cannot be non-uniform but with internal knots it is non-uniform if the knot spacing in parameter space is not uniform. See the List command for a detailed look at the knots.


1 Like

@pascal - You appear to be saying a single span curve can have internal knots? How does that work? Or does you sentence need editing?

1 Like

thank you pascal.
I am bent these days to understand this story of uniform and non-uniform knots
…j had a false understanding of the parameters which define if the knots is uniform or not

hi david
I think he just said
that only the curves which contain internal knots can be non-uniform

I tweaked the phrasing a bit, it may have been ambiguous as David pointed out…