What is really the knot of a NURBS curve?

Perhaps a new thread on InsertKnot or InsertControlPoint would be appropriate.

Steven is correct.

Both InsertKnot and InsertControlPoint add a knot and a control point for a curve, and a knot and a line of control points for a surface.

InsertKnot does not change the shape of a curve or surface, but moves adjacent control points.

InsertControlPoint always changes the shape of the curve or surface except for special cases, but does not move existing control points.

Only if the input curve has uniform knots. Then InsertControlPoint reassigns the parameter values of all interior knots so the curve continues to have uniform knots.

If the curve has non-uniform knots then the new knot created by InsertControlPoint has the parameter value associated with the selected location on the control polygon for the new control point. InsertControlPoint shows a point moving on the curve as the location of the new control point is selected, and this location has the parameter value of the new knot. The other knots retain their previous parameter values.

The locations of adjacent control points are also changed by InsertKnot. If adjacent control points were not automatically relocated then the curve shape would change. (corrected)

1 Like

yes I like this kind of subject. It enriches the debates and it allows you to learn.
i’m always on the go with nurbs, i love this world so much.

yes I was talking about if the base curve is single span of course …
adding a point does not do the same as adding a knot directly to the curve.
even they have the same principle.
point = knot
Where
knot = point.

yes I know, adding the first point of controls places the knot in the center of the domain of the curve. if we add a second point
rhino makes an update on the first knot to give a uniform space on the domain of the curve so that the second knot takes its place uniformly on the curve.

thanks for the information david. I have not had such experience to see this in rhino.
I see what you mean.
adding a point between two non-uniform knots only has the interval between the two knots to use to place the new knot.
I wanted to explain in my previous message, that for example
I could add control points no matter in different places on two curves without this changing the uniform structure of the knots for the two curves

because, if I coincide the control points obtained in the two curves in the same place, the curves take the same shape at 100%

while with the addition of knots.
this is not possible, if not impossible in rhino.
so imitating a non-uniform curve is very very difficult or even impossible in rhino

this deffirence has dramatic effects on the geometry that we want to create from these curves.

if I create two curves for example of degree 3.

I add two knots on one, and on the other I add two points of controls.
theoretically I get two curves of the same degree and the same number of control points.
until all is normal .yes?

but it is not the same.
we will never obtain clean surfaces with this configuration of deffirent curves at the same time.

all the commands which base on the stricture of the curves to create a surface will fail. loft.edgsrf swep2rail.
so that they generate more knots compared to the input curves.

you just said at the top that insrtknot does not change the shape of the curve.

now are you all saying the opposite?

compared to my experience with rhino the knots do not change the shape of the curves even at a small hair. (I may be wrong but I need convincing proof to change my opinion)

adding a knot is like splitting a curve using split… or add a krink this place of division contains information of the same parameter or vector as that added by a single knots.
the only deffirence is that it contains a full multiplication of these values, so that the curve can bend at this point
(if adding a node changes the shape of a curve. then even dividing changes the shape of the curve.!!

I can prove this with a little practical video in rhino,
(i take forever to write english text. i often use google translation.)

1 Like

Mistake. I mean to say “If adjacent control points were not automatically relocated then the curve shape would change.” I will correct the previous post.

I frequently use curves with multiple spans. Some curves have uniform knots, some curve have non-uniform knots.

There are good reasons to use only single span curves and surfaces. The ability to match curves and surfaces is a major one.

There are good reasons to use multi-span surfaces. Minimizing the number of control points while maintaining the desired shape and continuity is a major one.

There are good reasons to use only uniform curves and surfaces. The ability to match curves and surfaces when the number of spans also match is a major one.

There are good reasons to use non-uniform multi-span curves and surfaces. Minimizing the number of control surfaces by eliminating unnecessary control points is a major one. Improved interpolation of points is another major one.

1 Like

Simple experiments for anyone interested:

Create a curve.
Make a copy of the curve.
InsertKnot to add a knot and a control point to the copy.
Notice that the shape of the curve has not changed.
Turn on control points for both curves.
Notice that several of the control points were moved by InsertKnot.
InsertKnot moves the control points automatically so that the shape of the curve does not change.
Drag the control points which moved back to their original position.
Notice that the shape of the curve changes when the control points were in their original position.

Create a curve.
Make another copy of the curve.
InsertControlPoint to add a control point and a knot to the the copy.
Notice the shape of the curve has changed.
Turn on control points for both curves.
Notice that the position of the original control point have not changed.
Try to match the curve with the added control point to the original curve by moving control points.

1 Like

I bet you are glad you asked, aren’t you!?

Fascinating guys, thanks for all this input. My brain now hurts, but in a very worthwhile way!!

1 Like

@user1689 Certainly, I am. Brilliant community! My brain has swelled as well, but it definitely requires some time and experience to absorb it finally

Lots of good technical and historical information here.

I also like to think of it as why as a developer you would want the different parts of NURBS, and what abilities they give users.

  • NU: Nonuniform. This means that you have a knot vector, and spans can be different parameter lengths. Users are able to refine the curve/surface, adding new points anywhere on the curve/surface without changing the shape at all. As opposed to SubDs, which are uniform, and change shape unless you split all faces in the middle at once.
  • R: Rational. This means that CVs have weight. You’re able to represent circles and cylinders exactly.
  • BS: B-Spline. This basically means that it’s using underlying spline math that’s compatible with Beziers. It’s a convenient way for users to produce Bezier spans that are high-continuity, with local control and as many CVs as they want.
    B-Splines aren’t perfect, but they’re a good balance of various requirements. Other curve/surface types can have drawbacks:
    • a limited number of CVs
    • modification of any CV changes the entire curve
    • no guarantees of smoothness
    • poor performance for interactive use
    • incompatible with other modeling systems
4 Likes

Thanks for such a succinct explanation. I’ve (also ?) been misunderstanding the distinction for years.

But honestly thanks to all who’ve taken the time to answer this thread. A great resource. I’ll get reading

I did but realise this. I had noticed that some points caused ‘kinks’ and others merely adjust the curvature. Glad to get a bit of clarity on why that is the case

he is right in what sense? i didn’t say something that goes against what steve said !.
on the contrary I clarified the difference hidden behind the scenes between the two commands (add point and add a knots) to explain the reason for this different behavior.

I did not quite understand what you mean by the?
Can you clarify more about this?
or give an example when the curve changes shape, in the case where the points do not shift automatically if we add a knot? .