Talk:Non-uniform rational B-spline

Inline citations
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)

Image Caption
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) Good catch --SmilingRob (talk) 05:20, 28 January 2009 (UTC)

No, I believe 2-D is correct, though "2-D" is a bit superfluous. All ideal surfaces are assumed to have zero thickness.

This is true of any "surface" (not particular to NURBS) in a 3-D space. "Surfaces" have extent in two directions (2 degrees of freedom), though they can be curved in 3-D space. Picture a bed sheet hanging from a line and assume it has zero thickness.

A 3-D object in 3-D space would be called a solid or volume -- Examples; a sphere, cylinder, cube, etc. Rjwheele (talk) 19:12, 4 March 2016 (UTC) So... the caption might say "A 2-D NURBS surface in 3-D space", but it seems like overkill. Rjwheele (talk) 19:15, 4 March 2016 (UTC) — Preceding unsigned comment added by Rjwheele (talk • contribs) 19:07, 4 March 2016 (UTC)

B-Splines vs. Bézier Splines
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)
 * 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)

Continuity again
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)

Double knots in the circle example
"(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) G. Rote

Addition. I checked: the 2nd derivatives of the spline curve are not continuous. --130.133.8.114 (talk) 18:29, 30 June 2010 (UTC)
 * 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)

The different segments of the circular curve do *not* use the same parabola.

Clarification on the Number of Knots
"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)

It occurs to me that some of the confusion in this article is between "control points" and "knots". The graphic at the article shows only the knots (the green points). It might be clearer and more intuitive to the reader if it showed example control points (on the curve) as well and had labels that named them both.

Another point of possible confusion is that this graphic shows a NURBS "Curve" (i.e. 2-D) where most of the article is about NURBS "Surfaces" (i.e. 2-D surfaces in 3-D space). A NURBS surface has NURBS curves in two directions. A brief explanation of that difference might help. Rjwheele (talk) 19:33, 4 March 2016 (UTC)

Number of Knots per Control Point
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)


 * 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)

In my opinion the total number of knots (counted with multiplicity) should be equal to the number of control points plus degree minus 1. Exampled: degree=d=1 (order=2). These are just polygonal chains through the control points. clearly we don't need more knots than control points.


 * 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)

And to get the curve starting at the first control point, we don't have to repeat the first knot more than d=1 times. (The first and last knot in the circle example should be deleted. Multiplicity 2 is enough (I did the calculation).)


 * 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)


 * 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)


 * 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)

In general, the first d knots can also be distinct, but the curve will then not start at the first control point (it will start only (d-1)/2 "steps" later. --130.133.8.114 (talk) 18:51, 30 June 2010 (UTC) Günter Rote


 * 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)

Maybe the sentence should be rephrased. All in all, I'd say it would be misleading to say that number of knots (NK) is ALWAYS equal to the number of control points (NCP) plus degree (DEG) minus one, because in most cases clamped curves have number of knots equal to the order at the ends. For cubic curves this means NK = NCP + DEG + 1 <=> 8 = 4 + 3 + 1 (Toivo83 (talk) 06:11, 2 November 2011 (UTC))
 * '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)

Well, I am completely new to this and frankly having some difficulty understanding it but it is clear to me that some examples imply that NK = NCP + DEG - 1. I finally convinced myself that NK = NCP + DEG + 1 and I'll explain that below. Therefore, I think there is a problem with the examples.

Take the simplest possible example: a 0-degree NURBS with one control point. It has to have one knot span and so it has to have two knots. If NK = NCP + DEG - 1, then this NURBS would have 0 knots. Clearly, that's not going to work. And before you say a 0-degree NURBS isn't valid, I note that you can evaluate it. The generated curve is just the lone control point itself.

Likewise, the section ″Comparison of Knots and Control Points″ states that ″each control point corresponds to one basis function which spans a range of (degree+1) knot spans″ but it seems to me that it's only (degree) knot spans or maybe the author means the spans spanned by (degree+1) knots. Mark.sullivan (talk) 22:54, 5 July 2015 (UTC)

Here is another source for the reasoning behind using num(knots) = num(CPs) + order - 2 (or, alternatively, num(CPs) + degree - 1 ): http://developer.rhino3d.com/guides/opennurbs/superfluous-knots/ To quote: "The [extra two] knots are superfluous because they are not used in NURBS evaluation and they make it appear the first and last spans are different from interior spans. ... One reason some mathematical texts on NURBS, like Carl DeBoor’s b-splines, have the extra knots is that ... it means that the recursive b-spline basis function definition DeBoor uses is well defined for degree zero b-splines. There is no good reason for modern computer code or text books focused solely on computer aided applications of NURBS to drag this kind of theoretical baggage along." So in essence it appears to be an optimization used in Rhino and the associated OpenNURBS SDK, as well as possibly in some other modeling software (but NOT in OpenGL or IGES). An authoritative explanation would require comparing the theoretical definition of a NURBS curve with the algorithm used in the OpenNURBS SDK (which is open source) to see how the extra two knot values are optimized away. Frankhecker (talk) 18:17, 24 December 2016 (UTC)

"The number of knots is always equal to the number of control points plus curve degree plus one" is fundamentally correct. The formulas presented with written explanations of NURBS will require that many knots. HOWEVER, programmers often use a recursive (De Boor's) algorithm to calculate NURBS values. De Boor's algorithm can skip an iteration (thereby requiring fewer knot values) for any instance of 'u' which appears explicitly in the knot vector (iterations = deg - multiplicity). Since the minimum and maximum u values (those values for which the "extra" knots would be necessary) will always appear in the knots sequence, De Boor's will always be able to skip an iteration (thereby not requiring the "extra" knots) at those values of u. ShayAllenHill (talk) 18:24, 28 March 2017 (UTC)

The subject of knot counts is confusing. What almost every reference tells you is that number of knots = number of controlPoints + degree + 1. However, if you look at the details of the various formulae for computing points of the curve, you will see that the first and last knots always get multiplied by zero in the calculations. So, they are superfluous, and can be omitted. You can easily confirm this for yourself. Get a NURBS curve package that allows arbitrary knot sequences. Build a simple one-span cubic curve with knots -3, -2, -1, 0, 1, 2, 3, 4 and any control points you like. Now build a curve using the same control points but knots a, -2, -1, 0, 1, 2, 3, b, where a and b are anything you like (as long as a≤-2 and b≥3). You will get exactly the same curve. The extraneous first and last knots were included in the early materials on the subject (including the IGES standard) and the practice was copied by later authors.

Parameterisation ratio
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)

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

I asked myself the same question. I think it's a typo, and should be 'uniform circle', which I think is a circle that will give equidistant points when the parameter space is uniformly traversed. As an aside, the table needs an order and a knot vector before it really defines a uniform circle. The order is three, and the knot vector something like {0,0,0,1,1,2,2,3,3,4,4,4} Mauritsmaartendejong 20:38, 19 June 2007 (UTC)

Picture
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. &mdash;BenFrantzDale 16:46, 16 February 2006 (UTC)

Well, its kindoff hard and simple at the same time. See more is about the specifications of the image, i mean you could photograph any mobile telephone, or any western airplane. But more of the trouble here is to make a piucture that is MEANINGFULL for the potential viewer. See when i take a look at my telephone i know what im looking for so i can see how the patch layout is done. But the untrained person will most definetly not see it unless pointed out, and even then if the designer of the phone did a superb job there would be noothing to see. Just imaginary lines. So its definetly going to have to be a rendering.

Now to complicate this a bit, most eingeneering applications make use of as many independent pieces of trimmed nurbs surfaces that most noneingeneers wont believe. -J-

Subs versus nurbs
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 &#34;ToMar&#34; Maier (talk) 05:56, 7 January 2018 (UTC)

Miswording
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)

Yes i changed magnitude in the first explanation to the word length, magnitude however does mean the same thing for a vector (magnitude of a vector is its exact length, so all vectors of same length have same magnitude). But for the readability its indeed better to use the word length. Because its a more understandable wording -J-

Edity, i think the entire section of C0 C1 and C2 continuity should be revised fully, indeed C0 continuity implies end points matching, C1 is matching the vector of change direction and C2 is matching vector length change. So it is NOT enough to be same length but the rate of change must also be a continuous function (remember we are talking of function continuation here)

So simply, c0 ensures that the curves continue seamlessly, c1 ensures the angles the same, c2 ensures change of rate is continuous. -J-

PS i was talking to a engineer who needed c3 continuity because of some stress calculational reason.

Unverifiable History ("by linking to other websites only")
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. Dall ben  22:33, 1 December 2006 (UTC)

87.123.118.104 01:39, 27 December 2006 (UTC)

As Google search is your only source for verification, you are much too daring to touch historic facts in this article. Wikipedia is not intented to be reduced to google-content only. You might have realized that 1993 was very long before Google was founded or active on the internet. If you doubt the facts here you should take a closer look at the history of this article, which includes additional information about the first NURBS modeler on the PC. And NöRBS was also listed on the 1995 published O'Reilly New Riders Pub Book about 3D Studio Plugins. So please dont touch it again as you have nothing to offer which can be called a reason, but: >>I did not find it on a Google quicksearch.<<

87.123.118.104 01:39, 27 December 2006 (UTC)


 * Well, I think it would be prudent for you to review Wikipedia's policies on verifiability (pay special attention to point three of the nutshell summary). Thus, you cannot claim that I am wrong in removing the sentence—it is unsourced and does little to add to the article's quality.  So, instead of removing it, I've added a citation notice to the sentence, which you should fill out with nicely formatted sources, verifying the claim that NöRBS was indeed the first interactive NURBS modeller.  (Please note that citing this article's history is patented nonsense—how on earth can that verify anything?).  Finally, from your tone and from your IP address's geographic region, you've given me every reason to believe that a WP:COI is highly probable.  Regardless of your motivation, cite the sources that verify this claim and the sentence will actually improve the article.  Dall  ben  21:18, 27 December 2006 (UTC)

Hi, it seems we have a completely different reception of what is verifiability. Some editors have decided that the fact that NöRBS was published and presented first on the CeBit fare in 1994 is not an important information and therefor removed it from the article. You can find this information only in the history of the article now. I can perfectly understand people treating this information as not important enough to be part of the main article. In my reception this is a perfect source for verification: "It was developed in cooperation with the TU Berlin and presented on the biggest IT fare in the world, the CeBit 1994", as all these are verifiable facts. Not by a google search, but by researching at the place itself. Some editor added the fact that it was presented at the booth of a company called CAA Gmbh, to emphasize the credibility of the statement. This was removed too. Now you call it complete Bollocks to be directed to the history page for valuable information for verifiability?

Another - and in my view much more important - aspect is the fact that the article about the history and the use of NURBS containing the sentence you are challenging now is online since 10th 3rd of July 2005. Many people have contributed and edited since then and much more have read and reviewed the content. There is not a single statement which could be regarded as doubt or even contradiction to the stated facts. Except yours, of course. Therefor the challenged informations have been steeled by the most valuable source of infomation: The Public. Everybody with access to the internet had the chance to say: Thats not true! for nearly two years now, and even more important: still has. Nobody did because it is simply the verifiable truth.

And we are not talking about some minor or even irrelevant subject, NURBS is one of the most widespread technologies in the world, even more than the PC as it is used in the industry too. Therefor it can be assumed that this article has been read by nearly anybody who has to do with NURBS on a professional level and knows about the Wikipedia.

All this is also the answer to the question: Was NöRBS really the first one on the PC? This is perfectly true until somebody comes up with some evidence saying: No, this one was earlier. Nobody knows everything in the world. I dont know if e.g. some Nepalese or Chinese climbed on the Mount Everest before Sir Edmund Hillary did so in 1953. Therefor, as long as there is no evidence for this case i will continue to say and believe: "Yes, it was Hillary who first climbed on top of this mountain".

But for those who still see any incompatibility of all the above with some *guidelines* here, the software called NöRBS was also presented (and included on CDROM) in the 1995 published book called >3D Studio Ipas Plug-In Reference<, I am citing it here and not in the article itself for not making it subject of removement to the page history and in the following.... see above for details. 87.123.92.233 23:22, 3 January 2007 (UTC)
 * 1) Author: Tim Forcade
 * 2) Publisher: New Riders Pub; Bk&CD-Rom edition (July 1995)
 * 3) Language: English
 * 4) ISBN-10: 1562054317
 * 5) ISBN-13: 978-1562054311

Removed the citation request as it is fullfilled here without adding unwanted overhead to the article itself. In addition the Google search cited here before shows that this page is used as a reference for other websites. Google itself judges this as a fact emphasizing the relevance of this page. 87.162.96.161 23:02, 7 February 2007 (UTC)

Removed the cleanup request too, as there has not been any noteable argument for keeping it since the request for verifiability has been answered here. 87.162.89.63 21:02, 11 April 2007 (UTC)

(Excerpt) "Vellum gives you the capability to create free-form curves through NURB (Nonuniform Rational B-) Splines, which provide more control over curvature than Bezier splines do, according to Ashlar." - Milburn, Ken (April 30, 1990). "Ashlar Vellum Gives Intuitive Interface to Macintosh CAD". InfoWorld 12 (18): 73–77. ISSN 0199-6649. — Preceding unsigned comment added by 204.128.192.31 (talk) 19:34, 7 July 2012 (UTC)

Request for image ?
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)

Violation
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)

Application
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)

PCs in 1985 ? Impossible to do interactive modelling with these machines.
I heavily doubt the claim of Formation Design Systems of having offered "the first interactive NURBS modeller for PCs, called Macsurf (later Maxsurf)" in 1985 as PCs of that time did not offer the neccesary calculating power for interactive modelling with NURBS. The evaluation of the underlying mathematical equations is very complex and can NOT be done in an interactive way without the neccesary calculating power. My guess is they worked on mainframe-backuped workstations or terminals at that time and therefor now make a claim for "something looking like a PC". Or maybe they did some trials on the INTEL 80286 machines of that time which had a maximum speed of about 10 Mhz, or they regard "interactive editing of numbers" like you can do it in a texteditor as their idea of "interactivity". So this is a request to remove this claim unless they do not offer any proof for it.

Regarding history ... The following statement is wrong: > At first NURBS were only used in the proprietary CAD packages of car companies. Later they became part of standard computer graphics packages.

NURBs first appeared in the Ph.D. thesis of Ken Versprille. This was around 1975, I think. Later, Versprille went to work for Computervision (an early CAD vendor) and implemented NURBs in their software, in around 1981.

NURBs were proposed as an addition to the IGES standard at a meeting in St. Louis in 1981. At that time, the proposers (SDRC and Boeing) both had working systems based on NURBs. In fact, Boeing had been developing NURBs technology since 1979 (the "TIGER" project).

I don't know if any of these early systems qualify as "interactive" by your definition (whatever that is), but "interactive" seems like an arbitrary and pointless distinction anyway.

The "car company" software you refer to is presumably the work of de Casteljau and Bezier. These are definitely very old (1959 and 1963 respectively). But neither of them used *rational* functions, they only used polynomials. In fact, Bezier didn't even use splines, he only used curves with a single "span".

basis functions
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)

Wrong Control Points in the Circle Example
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)

File:NURBS 3-D surface.gif to appear as POTD soon
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)

Difference and similarities with bezier and bsplines?
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)


 * 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)

First interactive NURBS history correction
"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)

recursion formula knot vector
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)

Answering my own question: as an implementation detail when the denominators of f,g vanish due to multiplicative knots they can be set to any arbitrary finite value which ultimately drop out being later multiplied by zero. (assuming knots has permissible multiplicity) Someone with sufficient expertise should verify and add that to the article. The "{ ..., " notation ought to be explained as well. I guess it means the end knot might or might not be repeated.

Intuition of circle, conic section, and projection properties
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)


 * 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)

Comparison of Knots and Control Points
''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 &lt; 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 &lt; 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 contradict to section &mdash;Hobart (talk) 19:11, 21 July 2015 (UTC)

(non-rational B-splines are a special case of rational B-splines)
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) From Rational B-splines: "Rational B-splines are defined simply by applying the B-spline equation (Equation 87) to homogeneous coordinates, rather than normal 3D coordinates." -- so "non-" here means "absence of", specifically "absence of 'w' (weight) parameter per coordinate". Therefore, "non-rational .." are a "special case", in that their coordinates lack 'w's, so are equivalent to all having "w = 1". I've made the parenthetical clearer now: (Non-rational B-splines are a special case of rational B-splines, where each control point is a non-homogeneous coordinate rather than a homogeneous coordinate). ToolmakerSteve (talk) 10:28, 29 April 2017 (UTC)

It has always seemed goofy to me to use the term "non-rational" to refer to a NURBs curve whose weights are all equal. When the weights are all equal, the rational basis functions collapse and become polynomials. Clearly a polynomial *is* a rational function, so calling it "non-rational" is just plain wrong, IMO. The terms "polynomial" b-spline, or "integral" b-spline are more sensible, and are used by some authors.

Perfect Helix
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)

Correct. You can not represent a helix as a NURBS curve. So, CAD systems use approximations.

"Standards"
ACIS isn't a "standard". It's a proprietary modeling kernel written by a CAD vendor. Other similar kernels are Parasolid (from Siemens) and Granite (from PTC).

Pros/Cons of NURBs
It might be useful to include a section that assesses the claimed benefits of NURBs. Two dubious ones spring to mind:

First, the claim that NURBs can represent a large class of geometry without approximation. Specifically, they can represent circles, conics and quadrics exactly (whereas polynomial splines can not). This is only a half-truth. A NURBS curve can represent the *shape* of a circle, for example, but not its most useful (constant speed) parameterization.

Also, most modelers already have special-case analytic representations of circles, conics and quadrics. So what's the point of having a second (and inferior) way to represent them??

Finally, while exact representations are pleasing to mathematicians, they don't matter very much to engineering/manufacturing folks. Polynomial splines can provide approximations of circles, conics and quadrics that are plenty good enough for practical applications.

Second, the claim that NURBs are easy to evaluate and compute with. Well, "easy" is a relative term. Certainly rational functions are much harder to handle than polynomial ones. Differentiation is harder, integration is *much* harder, and you constantly have to worry about the denominator becoming zero. The benefits do not justify the pain, IMO.

NURBs representations of circles and quadrics are verbose. At least 16 numbers for a circle, where 5 would suffice.

NURBs representations of circles and quadrics are computationally unstable. Take a NURBs curve representing a circle. Calculate its radius (from the control points). Do a 3D translation/rotation of the NURBs curve to get a new one. Calculate the radius of the new curve. Do you get the same radius in both cases?? No, you don't, in floating point arithmetic. In fact, in floating point arithmetic, the new curve won't even be circular.

The Name of Monsieur Pierre Bézier
The gentleman's name is Bézier, not Bezier. In French, "é" and "e" are two different vowels, with different sounds. "Bézier" is pronounced "Bayzeeyay", whereas "Bezier" would be pronounced "Buhzeeyay". I happen to know that the family of the late Monsieur Bézier get pretty upset when they see his name mis-spelled. It's not surprising, really. If your name was "Smith", you wouldn't like being called "Smoth".

Wrong basis functions?
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)

end vectors

 * Curvature continuity (G²) further requires the end vectors to be of the same length and rate of length change.

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)

Doctor Versprille

 * Non-uniform rational basis spline (NURBS) is a mathematical model based primarily on the work of Kenneth J. Versprille, Ph.D.

This belongs in the History section, not the first sentence; the author's name tells us nothing about what it is or how it is used. —Tamfang (talk) 08:25, 27 June 2024 (UTC)