Given that the reader probably understands more about the Math of NURBS than I do, the reader will also understand that in general, true NURBS Curves will not touch their control-points. My own earlier misperception of that subject came through the use of the (now-defunct) application ‘TrueSpace’, which arbitrarily labeled objects as NURBS, which were really not that.
It should also be understood, that classic cubic splines are not NURBS either.
Given this understanding, a question might arise as to why the actual application “Ayam” is capable of taking an arbitrary CSG-primitive, and converting that into a NURBS-Patch.
And there are really several separate cases, in which this is possible:
(Last Updated 08/20/2017, 22h05 : )
- The Order of the NURBS may only be 2, given that the application in question has fully-general Math to work with NURBS. In that case, by default, the position of 1 point along a curve will be determined by 2 adjacent Control-Points, and at one exact parameter-value, will be controlled by only 1 Control-Point. This is a simpler type of NURBS, which will show as straight lines between the CPs, and which touches each CP. It’s useful to convert a Cube.
- True NURBS have a Knot-Vector, which states possible repetitions (“Multiplicity”), and which the application in question does implement. When the Knot has a Multiplicity equal to the Order of the NURBS Curve, it takes over the position of the Curve completely. However, a set of three NURBS Control Points can form a linear, equidistant sequence, with each CP having a Multiplicity equal to the Order minus one. The two NCurve CPs that form the endpoints can correspond to the ICurve Handles, while the NCurve CP in the middle can correspond to the ICurve CP. What will happen is that the NCurve will touch the CP in the middle, but not the ones at the ends. This is similar to how a circle is formed, with an Order of 3.
- A NURBS-Surface – i.e., a -Patch – is a special case derived from a Curve, that has the two parameters U and V, where a Curve only used to have one parameter. The CPs are sometimes conceived to form a grid with rectangular topology. It seems entirely plausible to me, that the Order along U may be different from the Order along V, and then having a linear Order along one parameter, may be the correct way to convert a Cylinder or a Cone. In that case, a Disk may simply be a special case of a Cone, where one parameter forms a circle, and the other, linear parameter defines either the radius or the height – with a single CP defining either the center or the vertex.
- Most plausibly, if the NURBS-Patch is to have a different Order along U from its Order along V, it should also have two separate Knot Vectors.
A way to compute single, shared Handles automatically could be:
H1 = P2 – (1/4)( P3 – P1 )
If each ICurve CP is to have two Handles unto itself, a way to compute those automatically could be:
H2- = P2 – (1/6)( P3 – P1 )
H2+ = P2 + (1/6)( P3 – P1 )