What’s the argument for not making it correct?
What does “correct” mean to you?
Here are the pointwise errors of the obvious degree 2 and 3 NURBS unit circles:
So, they are not “correct” if you evaluate them in double-precision arithmetic. The relative error will hover around 1 ulp due to numerical roundoff. Does this matter for you?
In fact, their weights involve things like sqrt(2)/2, which can’t be represented exactly using floating-point numbers. So we don’t even have the “correct” NURBS curve when we store it in Rhino, just one which is very close by. Does that matter?
Hmm. I know that if I have the circle C(t) = (cos(t), sin(t)), I can take derivatives like C’(t) = (-sin(t), cos(t)), C’'(t) = (-cos(t), -sin(t)), C^(3)(t) = (sin(t), -cos(t)), C^(4)(t) = (cos(t), sin(t)), and so on… So, each “hodograph” of the circle is also a circle, still arc length parametrized, just rotated. That’s nice. The representation does not get more complicated as I take derivatives, the magnitude of the derivatives does not shrink or blow up or otherwise get unstable.
Oh no! What is this?? This plot is very interesting. Can you tell what’s going on? Does it matter for you?
Here are some plots of pointwise error of various (non-rational) B-spline approximations to the circle (the number of control points for each is N = 2^n):
How much accuracy do you need? What does 1e-7 pointwise error here mean? What about 1e-15?
In the very first plot in this post (showing d = 2, 3 NURBS), the level of numerical roundoff is hovering right around machine epsilon, which for a double-precision float is about 2.2e-16. That means about 2.2e-16 % error from being a circle. If we were measuring errors in lengths, and if the radius of the circle is 1m, this is smaller than one femtometer of error. One femtometer is roughly the “size” of a proton or neutron. Do you need this much accuracy?
Above, the orange curve in the middle plot shows that a degree 5 B-spline with uniform knots that is computed using a least squares fit has about 1e-7 % error. This is sub-micron precision and is much more accurate than what Rhino guarantees by default. Is this enough accuracy?
I can go on and list even more issues with NURBS curves if you want me to.
Please understand I am not the only person who holds this opinion. Here’s a paper written by Piegl and Tiller (the people who literally wrote the book on NURBS…): It is time to drop the “R” from NURBS | Engineering with Computers | Springer Nature Link
You might as well also argue against the use of cylinders, spheres, arcs, tori, cones, etc.
Clearly I am doing no such thing. Each of these types of geometry can be represented many different ways, and NURBS (as in rational B-splines) are only one choice.
[…] because there needs to be ways to communicate and contractually agree, between all parties involved, on what is meant without any arguments.
I am not sure what point you’re trying to make. Please elaborate if there is something important here I should understand.
I would think it would be reasonably easy to make sphere/sphere intersection or plane sphere intersection as a true circle or arc(partial intersection) even when the intersection does not coincide with the sphere’s isocurve.
Yes, it is. We can do that. Is this what you would like me to spend my time on? If there is a very good reason for it, which you can clearly articulate (beyond “the NURBS circle is correct”, which I do not find to be a particularly compelling argument), I am happy to do so.
Sam