From the seminal paper by Hughes I learnt that any B-Spline curve (or surface) can be described by a linear combination of B-Spline basis and control points, i.e.
C(x) = sum_{i=1}^n N_{i,p} B_i
where N_{i,p} denotes the i-th node of the B-Spline curve with order p, and B_i the coefficients, or the control points.
This works well if we have a pre-defined plane, and summing up the parts give the desired B-Spline curve/surface.
My question is: is there a way to express the B-Spline curve in the same manner where it is not necessarily a function (vertical line can have multiple intersections with the curve), for example how to write the B-Spline curve in the form above for the following curve?
{
"discretization": 100,
"degree": 2,
"controlPoints": [
-6.386, 4.902, 0, 1,
-3.693, 0.932, 0, 1,
-8.215, -4.66, 0, 1,
-2.899, -5.626, 0, 1,
0.814, -2.881, 0.359, 1,
7.024, -5.433, 0.804, 1
],
"knots": [
0, 0, 0, 0.375, 0.5, 0.625, 1, 1, 1
]
}
I am sorry that I cannot post the image because of low reputation. You can see the curve via importing the above data into the nurbs calculator. This is basically a curve with both vertical and horizontal components, with zigzags on both of them (there exists vertical/horizontal lines intersect with the curve at two points, respectively)
Clearly for a curve that is not necessarily a function (such as the one above) it cannot be decomposed directly into the bases. I am wondering how, then, can it be expressed explicitly using the same formulation.
Both analytic and numerical expressions will be very useful. Thanks in advance!
ARessegetes_Stery is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.