BSplineFunction[{pt1,pt2,…}]
represents a B-spline function for a curve defined by the control points pti.
BSplineFunction[array]
represents a B-spline function for a surface or high-dimensional manifold.
    
   BSplineFunction
BSplineFunction[{pt1,pt2,…}]
represents a B-spline function for a curve defined by the control points pti.
BSplineFunction[array]
represents a B-spline function for a surface or high-dimensional manifold.
Details and Options
    
   - BSplineFunction is also known as basis spline, nonuniform rational B-spline (NURBS).
 - BSplineFunction[…][u] gives the point on a B-spline curve corresponding to parameter u.
 - BSplineFunction[…][u,v,…] gives the point on a general B-spline manifold corresponding to the parameters u, v, ….
 - The embedding dimension for the curve represented by BSplineFunction[{pt1,pt2,…}] is given by the length of the lists pti.
 - BSplineFunction[array] can handle arrays of any depth, representing manifolds of any dimension.
 - The dimension of the manifold represented by BSplineFunction[array] is given by ArrayDepth[array]-1. The lengths of the lists that occur at the lowest level in the array define the embedding dimension.
 - BSplineFunction[array,d] creates a B-spline function of d variables.
 - The parameters u, v, … by default run from 0 to 1 over the domain of the curve or other manifold.
 - The following options can be given:
 - 
      
      
SplineDegree Automatic degree of polynomial basis SplineKnots Automatic knot sequence for spline SplineWeights Automatic control point weights SplineClosed False whether to make the spline closed  - By default, BSplineFunction gives cubic splines.
 - The option setting SplineDegree->d specifies that the underlying polynomial basis should have maximal degree d.
 - By default, knots are chosen uniformly in parameter space, with additional knots added so that the curve starts at the first control point and ends at the last one.
 - With an explicit setting for SplineKnots, the degree of the polynomial basis is determined from the number of knots specified and the number of control points.
 - With the default setting SplineWeights->Automatic, all control points are chosen to have equal weights, corresponding to a polynomial B-spline function.
 - With the setting SplineClosed->{c1,c2,…}, the boundaries are connected in directions i for which ci is True.
 
Examples
open all close allBasic Examples (2)
Scope (4)
Generalizations & Extensions (1)
SparseArray can be used with BSplineFunction:
Options (6)
SplineDegree (2)
SplineKnots (3)
SplineKnots->Automatic generates knots in such a way that the curve is smooth overall:
By repeating knots, one can decrease the smoothness of the curve:
Uniform knots that do not go through the endpoints:
Unclamped knots combined with SplineClosed will make a uniform periodic B-spline curve:
See Also
BezierFunction InterpolatingFunction BSplineBasis BSplineCurve BSplineSurface Piecewise
Function Repository: CurveToBSplineFunction AkimaInterpolation AkimaSpline LeeInterpolatingNodes
Related Guides
History
Text
Wolfram Research (2008), BSplineFunction, Wolfram Language function, https://reference.wolfram.com/language/ref/BSplineFunction.html.
CMS
Wolfram Language. 2008. "BSplineFunction." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/BSplineFunction.html.
APA
Wolfram Language. (2008). BSplineFunction. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/BSplineFunction.html
BibTeX
@misc{reference.wolfram_2025_bsplinefunction, author="Wolfram Research", title="{BSplineFunction}", year="2008", howpublished="\url{https://reference.wolfram.com/language/ref/BSplineFunction.html}", note=[Accessed: 04-November-2025]}
BibLaTeX
@online{reference.wolfram_2025_bsplinefunction, organization={Wolfram Research}, title={BSplineFunction}, year={2008}, url={https://reference.wolfram.com/language/ref/BSplineFunction.html}, note=[Accessed: 04-November-2025]}