Talk:Non-uniform rational B-spline

message: I have added some inline citations to relevant sections from two of the main reference books ("The NURBS Book" and "An Introduction to NURBS with Historical Perspective") supporting the following aspects:
* Invariace of NURBS surfaces under affine transformations
* Construction of basis functions
* Definition of a NURBS curve
* Manipulation of NURBS curves
Nedaim (talk) 21:07, 5 March 2010 (UTC)
thread_title:  Inline citations 

message: Excuse my ignorance - NURBS are new to me - but shouldn't the caption for the second image be "A three dimensional NURBS surface" rather than "A two dimensional NURBS surface"?  The surface and its control points are defined in 3D space rather than 2D.  If the 2D caption is correct, perhaps an explanation of the 2D/3D terminology [as it applies to NURBS] is justified.
ScottColemanKC (talk) 13:53, 6 January 2009 (UTC)
thread_title:  Image Caption 

message: I'm not sure I like the identification "NURBS (Non Uniform Rational Basis, or Bézier Spline)" in the History section.  A Bézier spline is a special case of a B-Spline;  for example, a degree 3 Bézier spline on four control points is the same as a B-Spline with knot vector [0,0,0,0,1,1,1,1].  But I don't think it is standard to regard the B in "NURBS" as standing for "Bézier."  See, for example, 3-D Computer Graphics: A Mathematical Introduction with OpenGL, by Samuel Buss, Chapters 7-8. I think it would be better to replace the above quote with simply "NURBS (Non Uniform Rational Basis Spline)". Verdanthue (talk) 23:33, 2 April 2008 (UTC)
replies: text: I agree. Bezier splines have no internal knots, which rules out Non-Uniform-ness. Bringing them together in one
term makes no sense. I will follow your suggestion. Mauritsmaartendejong (talk) 20:55, 5 April 2008 (UTC)
thread_title:  B-Splines vs. Bézier Splines 

message: I propose to remove the discussion on continuity within the article by splitting it in two distinct parts (and putting it in a separate section). The C0, C1, ... etc definitions relate to parametric continuity and require the derivatives of the curve with respect to the parameter to be continuous. G0, G1, ... definitions relate to geometric continuity, which I think is equivalent to parametric continuity provided that the parameter exactly represents the length of the curve -- which is hard to achieve in practice. 
In modeling, geometric continuity is usually a requirement. Parametric continuity is a bonus, e.g. if rendering can use parameter space directly for tesselation.
Two separate NURBS curves which are not Cn continuous can be Gn continuous. For instance, two linear NURBS segments with different knot spans but collinear control points
will show G1 continuity.  Mauritsmaartendejong (talk) 15:11, 6 January 2008 (UTC)
thread_title:  Continuity again 

message: "(In fact, the curve is infinitely differentiable everywhere, as it must be if it exactly represents a circle.)"
This is true in the geometric sense, is it true in the parametrized sense? Isn't it true  that two rational functions which agree in all derivatives in some point must be identical, like it holds for polynomial functions? But here we definitely have pieces with different functions on successive intervals. Someone should do the calculations to check this.--130.133.8.114 (talk) 13:01, 30 June 2010 (UTC)
replies: text: Since the segments are parabolas, with the same parabola for each segment, by symmetry it should be C1 continuous at the double knots. Since it's quadratic, I'm not surprised the 2nd derivatives aren't continuous. —Ben FrantzDale (talk) 13:47, 16 September 2014 (UTC)
thread_title:  Double knots in the circle example 

message: "The number of knots is always equal to the number of control points plus curve degree minus one."
I urge the athor to expand his or her explanation of this relationship but I do not personally feel qualified to make these changes.  I spent some considerable time on this issue and still am not clear on what the proper relationship should be.  Using the Forenik tool, which is by the way very cool, referenced in the article I deduced that nKnts = nPts + nDeg + 1 whereas the article states that nKnts = nPts +nDeg -1.  To me this implies that there is some confusion over whether the ends are or are not knots.  In addition the number of knots issue needs to be clearly differentiated from the subject of end point multiplicity.  To the casual reader multiplicity apparently reduces the number of knots.
And thanks much for this article.  Between this article and the Forenik tool, I now have a very good understanding of NURBS.  — Preceding unsigned comment added by Petyr33 (talk • contribs) 18:28, 21 February 2013 (UTC)
thread_title: Clarification on the Number of Knots

message: Quote from the text (from the section on Knot Vector): The number of knots is always equal to the number of control points plus curve degree plus one.  
Shouldn't it be: ...always equal to the number of control points minus curve degree plus one.. 
Example: A cubic NURBS curve with 4 CPs has got 2 knots: 
4 – 3 + 1 = 2  —Preceding unsigned comment added by 193.170.135.17 (talk) 11:05, 2 December 2007 (UTC)
replies: text: No. If a cubic curve with four control points has two knots, they have multiplicity 4, bringing the total number of knots to 8 = 4 + 3 + 1. The multiplicity of the boundary knots causes the curve to be clamped to the first and last control point. See also property P3.2 in chapter three of Piegl and Tiller Mauritsmaartendejong 12:56, 2 December 2007 (UTC)

text: Acutally, you do need more knots than control points. To start with, you have to have at least two knots to make one knot span and you need at least one span per control point.  (You need (order) spans per control point but they overlap so you don't need NCP * order knot spans).  — Preceding unsigned comment added by Mark.sullivan (talk • contribs) 15:37, 6 July 2015 (UTC)

text: It isn't a matter of opinion or of 'needing extra knots' to clamp the end points, it is a matter of how NURBS are defined!  It is part of the mathematical definition of a NURBS curve that (including multiplicities) num(knots) = num(CPs) + order (CP is control point).  Since order = degree + 1, the above CP+degree-1 formula runs counter to the definition of a NURBS curve.  The correct definition ensures each CP has a 'fair chance' at the right number of knot spans.  Consider that the number of knot spans affected by a CP is equal to the order (this is a consequence of the way the basis functions are defined).  Consider a minimal cubic NURBS curve with 4 CPs: it is expected that the middle knot span is the only one affected by all 4 CPs.  Also, since order=4, we know the first CP affects exactly the first 4 spans.  So the last of those 4 spans must be the middle one!  So, there is a middle span and three spans on either side, for a total of seven spans, or eight knots.  This fits the +1 version of the definition.  If we took off two spans on either end to fit the -1 version, then we'd lose the spans that are affected by only one CP!  Note that all of this counts multiplicities as additional knots; a multiplicity just results in a 'degenerate' span, i.e., one with a zero-length interval in parameter space. --Migilik (talk) 05:20, 13 June 2013 (UTC)
replies: text:  Quote from 'Knot vector' "The number of knots is always equal to the number of control points plus curve degree plus one (i.e. number of control points plus curve order)", there comes 8 knots for a minimal cubic NURBS. This corresponds with OpenGL http://www.manpagez.com/man/3/gluNurbsCurve/ A little later in 'Comparison of Knots and Control Points': "there are groups of 2 x degree knots that correspond to groups of (degree+1) control points"So with the minimal cubic NURBS, 4CP correspond to 6 knots.  By instance, if you want a bezier you may use knots = {0,0,0,1,1,1}. This corresponds with the "blossoming algorithm" for construction. I think this is a contradiction in the article. Also, I fail to understand why these two extra knots are needed, how do they affect the curve?  — Preceding unsigned comment added by 190.31.220.128 (talk) 20:17, 28 May 2014 (UTC)
replies: text:  actually i vote for  Migilik version but no I have to dig out an authoritative source --91.155.246.233 (talk) 22:32, 8 November 2014 (UTC)

text: Yes and this is actually useful if you ever want to graft together a NURBS surface that need to attach to another NURBS surface but can not for topological reasons. In essence giving you t-splines with 1980's tech. With exception to periodic curves I have never seen anybody except myself use this feature for anything. --91.155.246.233 (talk) 22:32, 8 November 2014 (UTC)

text: 'misleading' is an understatement.  NK = NCP + DEG + 1 is the correct form for all NURBS curves (regardless of whether the common 'open uniform' knot vector is used), and having NK = NCP + DEG - 1 in the article will likely cause serious confusion for people new to the field. --Migilik (talk) 05:20, 13 June 2013 (UTC)
thread_title:  Number of Knots per Control Point 

message: Also note that the only significant factor is the ratio of the values to each other: the knot vectors [0 0 1 2 3], [0 0 2 4 6] and [1 1 2 3 4] produce the same curve.
Er, I've got a problem with the ratios (0:1 = 0:2 = 1:2) and (1:2 = 2:4 = 2:3) which is what this states. I can only conclude that the minimum value is also a significant factor. Can anyone help me out on this one?
The only significant thing is the ratio of neighboring parameter values in their ascending order, therefore the given example is correct. Minimum value has no significance. As long as a multiplier value exists to make ratio between different parameter values the same, the resulting b-spline curve will be the same.
E.g.  0 1 2 3 4  is the same as 0 2 4 6 8 (multiplier being 0.5)
or
0 3 6 9 12 is the same as 0 0.25 0.50 0.75 1.0 (multiplier being 12)
Actually for any uniformly increasing parameter values, curves with same control points position and same number of knot vectors will have the same shape (which means that all four above examples give identical curve shape provided their control points positions are the same).
For non-uniform splines:
0 0 1 3 4 5 is the same as 0 0 0.5 1.5 2.0 2.5 (multiplier is 2)
It is those differences in parameter values that determine chord length and affect the resulting curve shape. Therefore, same ratio between knot parameter values, combined with same control points positions will give the same curve. Think of it as a tension increased in one knot by any factor will not change the curve if the same factor of increased tension is applied to all the other knots.
The text doesn't make clear that changing the knot vector by a constant multiple will change the parametrization of the curve. The curve will be the same shape, but it will be different as a parametric function of u. Verdanthue (talk) 23:11, 2 April 2008 (UTC)
thread_title:  Parameterisation ratio 

message: Can someone explain what a "uniformed circle" is?  --Doradus 03:21, 5 February 2006 (UTC)
thread_title:  Uniformed circle? 

message: This article could do with a picture in as much as NURBS is an adjective to describe a class of shapes, particularly shapes of consumer products of recent years. —BenFrantzDale 16:46, 16 February 2006 (UTC)
thread_title: Picture

message: the following line needs editting:
Subdivision surface modeling is now preferred over NURBS modeling in major modelers because subdivision surfaces have lots of benefits. 
Because it is simply untrue. Or it would be true if a modelling packge could be clearly demonstrated not to include cad packages, and/or if cad packages would be very specialized minority. But the simple truuth is that theres more cad users on nurbs out there than theres DCC visualisers with subdivision surface modellers. And yet no cad package has switched over to subds. Because theres NO 2 degree continuity... And the tools are severely lacking form engeneerig perspective. -J-
I do completely agree as this is more or less opinion. It implies that nobody uses NURBS any more and instead uses Subs.
NURBS do have important advantages compared to Subs and therefor all mayor animation packages contain a NURBS engine. Opinions about Sub Division Surfaces beeing "better" belong to the appropriate page only. -R-
It's completely untrue that subdiv modeling is "preferred". Most animation systems use subdiv surfaces, but many use NURBs, too. In CAD, all of the major systems use NURBs, and they do *not* use subdiv surfaces. Some CAD packages have functions that *look* like subdiv modeling (e.g. the "Realize Shape" package in Siemens NX), but it's all NURBs under the covers. The data exchange standards (IGES STEP) do not include subdiv surfaces. There is no car on the road today that was designed with subdiv surfaces; they're all NURBS (or Bézier surfaces).
From what I can tell, Nurbs are great for construction while Subdevision (subpatch and catmull-clark) is great for animation (deformation).--Tobias "ToMar" Maier (talk) 05:56, 7 January 2018 (UTC)
thread_title: Subs versus nurbs

message: When describing the alternative definitions for C0 through C2 (right after they are introducted) the following claim is made.
:This definition is also valid for curves and surfaces with base functions higher than 3rd order (cubic). It requires that both the direction and the magnitude of the nth derivate of the curve/surface (d/du C(u)) are the same at a joint. The main difference to the definition above is the requirement for a same order of magnitude.
It sounds like whoever wrote this is confusing same 'order of magnitude' (roughly the same value) with having the same value.  If not one of the definitions is stated incorrectly as nowhere do they require same order of magnitude.  The order of magnitude bit appears in the next sentence as well.
I'm pretty confident that 'same magnitude' is what was intended from textual clues and my knowledge of the mathematical notions so I'm going to change it but I'm just learning about computer graphics so if I got it wrong please correct my error.  In either case once a person who knows the facts comes along and reads this and the page over this comment will become superflous.
Logicnazi 09:17, 19 June 2006 (UTC)
thread_title:  Miswording 

message: Could someone, preferably with expertise in the subject, go through the last four (untitled) external links?  Seems like a lot of duplicate information. --Ronz 00:27, 12 September 2006 (UTC)
thread_title: External links

message: I removed the following sentence from the article and moved it here until it can be verified:
In 1993, the first interactive NURBS modeller for PCs, called NöRBS, was developed by CAS Berlin, a small startup company cooperating with the Technical University Berlin.
I did a Google search to try and verify it and found nothing of note. Dallben 22:33, 1 December 2006 (UTC)
thread_title: Unverifiable History ("by linking to other websites only")

message: From my point of view it does not make much sense to add an image or rendering, as this would mostly show the effect of rendering, which is not a subject of this article. Therefor it would not really help for understanding NURBS, but in opposition add to the widespread missunderstandings of NURBS by giving the impression of "this is how they look like". 
Instead look at any car built within the last decade, or any hairdryer, sophisticated shampoo bottle, designerphone or other industrially generated freeform  object. There is a 99% chance you are looking at NURBS.
87.162.97.244 22:41, 19 April 2007 (UTC)
thread_title:  Request for image ? 

message: http://www.highend3d.com/dictionary/N/NURBS
violation of rights, unauthorized copy please check dear friends
After checking erase post. TNX
Flaming-Balrog
This is definitely a (quite literal) copy. But, if I look at the substantial history of the wiki page, I see parts of the page gradually emerging, which suggests that the copy was made from wiki to there. 
Mauritsmaartendejong 10:04, 24 June 2007 (UTC)
thread_title:  Violation 

message: I suggest to add this programm that is able to model NURBS XCModel. It was developed at University of Bologna, from Professor Casciola and his students under GNU/GPL licence.
--151.51.25.112 (talk) 18:49, 3 January 2009 (UTC)
thread_title:  Application 

message: I "corrected" the caption according to my unexamined prejudice – you'll laugh, I know – that weight functions ought to add up to a constant, and (at least when used for interpolation) not drop suddenly from maximum to zero.  A more knowledgeable person changed it back.  Evidently I have much to learn. —Tamfang (talk) 01:58, 18 November 2010 (UTC)
thread_title:  basis functions 

message: The circle example has obviously been wrongly corrected by this person:
(cur | prev)  06:35, 25 February 2011 Stefano.anzellotti (talk | contribs) (28,213 bytes) (→Example: a circle) (undo) 
Before, the control points were correct (namely only values from {-1,0,1}). The weights (in {1, sqrt(2)/2}) are still correct.
I never edited something in Wikipedia... should I correct this or does some admin have to do this?  — Preceding unsigned comment added by 137.226.115.43 (talk) 16:43, 1 September 2011 (UTC)
thread_title:  Wrong Control Points in the Circle Example 

message: Hello! This is a note to let the editors of this article know that :File:NURBS 3-D surface.gif will be appearing as picture of the day on January 28, 2012. You can view and edit the POTD blurb at Template:POTD/2012-01-28. If this article needs any attention or maintenance, it would be preferable if that could be done before its appearance on the Main Page so Wikipedia doesn't look bad. :) Thanks! —howcheng  {chat} 07:25, 26 January 2012 (UTC)
thread_title:  [[:File:NURBS 3-D surface.gif]] to appear as POTD soon 

message: I'm not an expert here, but I think a separate section detailing the differences and similarities with B-splines and Bezier curves would be beneficial.  — Preceding unsigned comment added by 131.155.212.226 (talk) 12:23, 29 August 2012 (UTC)
replies: text: I totally agree. The B-spline and NURBS pages aren't clearly differentiated. NURBS are an extension of B-splines, so everything to do with the basis functions and the knots really belongs on B-spline (unless I'm mistaken and regular B-splines don't include non-uniform knots). My understanding is that non-uniform knot vectors are a part of B-splines and so the difference between B-splines and NURBS is that NURBS are "rational" non-uniform B-splines. And to me, coming from computer graphics, "rational" means less to me than "homogeneous"; if I'd named them, I'd call them "homogeneous non-uniform B-splines". As far as I can tell, NURBS is just (non-uniform) B-splines with homogeneous coordinates, where you do a perspective divide at the end, as is typical in computer graphics. —Ben FrantzDale (talk) 13:58, 16 September 2014 (UTC)
thread_title:  Difference and similarities with bezier and bsplines? 

message: "Real-time, interactive rendering of NURBS curves and surfaces was first made available on Silicon Graphics workstations in 1989. In 1993,"
There was a Vector-General GP-workstation with custom firmware developed to do real-time interactive NURBS for a presentation to
the Ford Motor Co. prior to the above dates, about 1985-86.  No orders were placed so the system did not go into comercial production.
It was used to implement aplications and make videos of chasis-frame flexing and vibrations.
Lou schaefer (talk) 22:31, 23 December 2013 (UTC)
thread_title:  First interactive NURBS history correction 

message: I must be pretty dense - the recursion formula ( Ni,n = fi,n Ni,n-1 .. ) blows up in the case of knots with multiplicity.  Do you drop multiple knots as you recurse down in degree?  Whatever the procedure, it needs to be spelled out in the article.  — Preceding unsigned comment added by 2001:480:91:3303:0:0:0:6BC (talk) 21:49, 28 July 2014 (UTC)
thread_title:  recursion formula knot vector 

message: Coming to NURBS, I was stumped for a long time about exactly why they have the useful properties they do. It seemed like magic. This article doesn't seem to address that issue directly. I'm tempted to Be Bold and add something to the intro, but I want to be sure my own intuition is correct first. I'm thinking of adding something like this:
: NURBS have two particularly useful properties: NURBS can represent circles, circular arcs, and other conic sections; NURBS are also invariant under projection of their control points, meaning that given a NURBS, f, and a projection function, P, P(f(t)) = f'(t) where f' is a new NURBS formed by transforming the control points of f by P. NURBS essentially solves both of these problems at once: The "rational" part of NURBs provides the projection properties: Essentially, NURBS control points are in homogeneous coordinates, where the "weight" is the homogeneous term and the normalization step of evaluating a NURBS includes a perspective division. The projection properties of NURBS lead directly to NURBS' ability to describe conic sections including circles and circular arcs: a quadratic B-spline has parabolic segments. Parabolas are conic sections. To produce other conic sections, we can simply project parabolas onto different planes.
Does that sound accurate? —Ben FrantzDale (talk) 13:40, 2 September 2014 (UTC)
replies: text: No idea. Speaking as a 3D modeller and not a mathematician, it sounds a little technical for the intro to the article though. --Cornellier (talk) 19:24, 26 September 2014 (UTC)
thread_title:  Intuition of circle, conic section, and projection properties 

message: This section confuses me horribly.  I've successfully implemented a NURBS evaluator and I still don't get what the author is trying to say here.  I think the examples must be missing something.  Above, we learn that number of knots = number of control points + degree + 1.  Yet the example has 7 control points and a degree of 3, but only 9 knots.  Shouldn't there be 11 knots?
Take a degree 1 NURBS with 2 control points.  The generated curve is a single, straight line segment.  It must have 4 knots.  Make the knot vector 0,0,1,1 and let the parameter vary over 0 ≤ u and u < 1.
Over the first knot span defined by knots 0,0, only the first control point comes into play.  This span has 0 width, so the basis function is a zero-width peak with height 1.  Thus the value of the curve within the first, degenerate, knot span is exactly equal to the first control point.  Likewise, the last knot span defined by knots 1,1 generates the second control point exactly.  The middle span defined by knots 0,1 is a linear blend from 100% of the first control point when u = 0 to 100% of the second control point when u = 1-ε.
Generally, I feel it is a mistake to think about how knots relate to control points.  Instead, relate knot spans to control points.
My own explanation is this:
Adjacent pairs of knots define a knot span.  A knot span controls the generated curve over a range of values of the parameter u where first knot ≤ u and u < second knot.
Each control point influences the generated curve over (degree+1) knot spans and the span of the generated curve between two knots is a linear combination of at most (degree+1) control points.  "At most" because the first and last spans only consider one control point, the second and penultimate spans only consider two control points, and generally the first and last (degree) spans are influenced by less than (degree+1) control points.
Now all we need to know is which control points are included in the combination for each knot span. Using 0-based indexing, control point i influences the curve (is included in the linear combination) over the knot spans between knot i and knot i+degree+1.  Conversely, the curve generated in the knot span between knots i and (i+1) is a linear combination of control points in the range (i-degree) to (i).
The above applies to a non-periodic spline.  For a periodic spline, you overlap the first (degree) spans with the last (degree) spans and therefore each knot span is influenced by exactly (degree+1) control points.
:Moved above commentary by  here, added  to section —Hobart (talk) 19:11, 21 July 2015 (UTC)
thread_title:  Comparison of Knots and Control Points 

message: The subject phrase is from the "Technical specifications" section.  Is this correct?  If so, that's very non-intuitive terminology.  — Preceding unsigned comment added by Deepfrieddough (talk • contribs) 11:57, 18 June 2016 (UTC)
thread_title:  (non-rational B-splines are a special case of rational B-splines) 

message: I understand how a NURBS can follow a perfect circle. Of course, it doesn't follow it at a constant arc-speed with respect to its parameter, t. That is, at t=1/3, it's not 1/3 of the way along its arc. With that in mind, it seems that it would be impossible to follow a perfect helix. Is that correct? If so, is SolidWorks just approximating when I sweep a helix? —Ben FrantzDale (talk) 19:46, 7 October 2016 (UTC)
thread_title:  Perfect Helix 

message: Shouldn't f be linearly falling and g linearly rising so that the NURBS basis functions are a generalization of the Bernstein basis polynomials: https://en.wikipedia.org/wiki/Bernstein_polynomial?  — Preceding unsigned comment added by DozillaMaximus (talk • contribs) 13:25, 30 March 2021 (UTC)
thread_title:  Wrong basis functions? 

message: :
Unfortunately end vectors is nowhere defined, and I don't know what their length would mean here.  When I play with G² piecewise Euler spirals, my tangent vectors all have magnitude 1, and vary only by rotating (at continuous rates).  The language above seems more applicable to C². —Tamfang (talk) 18:50, 4 April 2023 (UTC)
thread_title:  end vectors