3D BSpline Representation
Disclaimer: This page is currently under review by the community.
The content of this page can be subject to change at any time. If you find any issues or if you have any review comments please drop us an issue on the PROSTEP JIRA.
This page resolves KBLFRM923
For historical reasons the documentation of the B_spline_curve is not clear and unfortunately leaves room for interpretation. This Implementation Guideline clarifies the relevant facts and describes the valid interpretations in the field.
Background
The following section contains a short wrapup about NURBS (Nonuniform rational Bspline). The description in this section aims primarily at an informal understanding and not at a precise and 100% correct mathematical definition. It contains just enough information to understand the definitions in this guidline and is a summary from multiple sources. For more details check for the following links ^{1}^{2}^{3} from which this summary has been derived.
NURBS are a commonly used as a representation of surfaces and curves in computeraided design and are part of numerous industry wide standards. For the KBL & VEC only the representation of curves (the 3D centerline of Segments) as NURBS is relevant. NURBS are representing a curve as a mathematical function. The appearance of the curve can be influenced by a set of parameters:
 Degree $d$: This is usally one of $\left [1,2,3,5 \right ]$. Sometimes, there are references to the order of a NURBS, where order is $d + 1$. The degree defines the number of control points that influence any given point of the curve.
 Control Points: The control points define the shape curve. Each NURBS can have $n$ control points, where $n > d$.
 Weight: Each control point can define an individual weight.
 Knot vector: The knot vector defines where and how the control points affect the NURBS curve. The number of knots is equal to $n + d + 1$. The values in the vector have a nondecreasing order. However, consecutive knots can have the same value, e.g. $(0,0,1,2,3,4,4)$ is a valid vector. A number of coinciding knots is sometimes referred to as a knot with a certain multiplicity. A knot where the multiplicity is equal to the order ($d+1$) is a full multiplicity knot.
Special Cases of NURBS
The NURBS (NonUniform Rational BSpline) are the most common form. There are groups of NURBS that have special properties:
 If all control points have the same weight ($w=1.0$) the BSpline is called nonrational
 If knot vector starts and ends with a full multiplicity knot the Bspline is called clamped. A clamped Bspline starts in the first and ends in the last control point.
 Uniform: There are some slightly different interpretations about the defintion of uniformity. In general uniform refers to the distribution of the knot values in the knot vector. Some sources (e.g. ^{2}) define, that if the knot vector is clamped, all other knots have a multiplicity of one, and all knots (values) have the same distance, the Bspline is called uniform. For example a NURBS with $d=4$ and with a knot vector $(0,0,0,0,0,1,2,3,4,5,5,5,5,5)$ would be uniform. Other sources (e.g. ^{4}) differentiate between clamped uniform and unclamped uniform:
 Clamped uniform would correspond to the defintion above,
 Unclamped uniform would require all knots to have a multiplicity of one, and all knots (values) to have the same distance (e.g. $(0,1,2,3,4,5,6,7,8,9,10,11,12)$).
Current Situation in the KBL
The intention of the KBL was, to keep the Bspline data model as simple as possible. Therefore the data model just contains the control points and the degree, assuming that all other parameters have an unambigious default when the set of valid NURBS are restricted to Uniform nonrational BSplines (UNRBS). This is the reason why the KBL model does not define a weight nor a knotvector.
Unfortunately, the definition of the KBL was not as precise as it could have been. No concrete definition was made as to whether these are clamped or unclamped uniform BSplines. At the moment implementations for both variants exist.
A subsequent restriction to one of the two variants was discussed in the relevant committees and considered impracticable. The reasons for this were, on the one hand, the large volume of existing data and, on the other hand, the nontrivial conversion process between the two variants, which makes it virtually impossible to implement it in practice.
Definition
The B_spline_curve in the KBL represents a uniform nonrational Bspline (either clamped or unclamped). When rendering 3D KBL data, the renderer has to use external knowledge to determine which variant is used.
Note: Due to this fact, the BSpline modeling in VEC version 1.2.0 and higher has been extended in a way so that all information of a NURBS can be represented.

https://en.wikipedia.org/wiki/Nonuniform_rational_Bspline ↩︎

https://pages.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/Bspline/bsplinecurve.html ↩︎

Les Piegl, Wayne Tiller: The NURBS Book, Page 572 ↩︎