This is documentation for Mathematica 8, which was
based on an earlier version of the Wolfram Language.
View current documentation (Version 11.2)

BSplineCurve

BSplineCurve
is a graphics primitive that represents a non-uniform rational B-spline curve with control points .
  • The positions of control points can be specified either in ordinary coordinates as or , or in scaled coordinates as Scaled or Scaled.
  • The following options can be given:
SplineDegreeAutomaticdegree of polynomial basis
SplineKnotsAutomaticknot sequence for spline
SplineWeightsAutomaticcontrol point weights
SplineClosedFalsewhether to make the spline closed
  • 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 curve.
A B-spline curve and its control points in 2D:
A B-spline curve and its control points in 3D:
A B-spline curve and its control points in 2D:
In[1]:=
Click for copyable input
In[2]:=
Click for copyable input
Out[2]=
A B-spline curve and its control points in 3D:
In[3]:=
Click for copyable input
In[4]:=
Click for copyable input
Out[4]=
A cubic B-spline curve:
B-spline curves with the same control points and different degrees:
By default, a B-spline curve is open:
A closed B-spline curve automatically adds the first control point at the end:
Knots can be explicitly specified to control the smoothness of a curve:
Weights can be specified to each point:
B-spline curves with different thicknesses:
Thickness in scaled size:
Thickness in printer's points:
Dashed curves:
Colored curves:
Use Scaled coordinates:
Use ImageScaled coordinates in 2D:
Use Offset coordinates in 2D:
By default, knots are generated in such a way that the curve is smooth overall:
By repeating knots, you can decrease the smoothness of the curve:
generates uniform knots, and the curve will not go through the endpoints:
Unclamped knots combined with SplineClosed will make a uniform periodic B-spline curve:
By default, all the control points have equal weights:
By giving more weight to a control point, the curve will be attracted to that point:
By using weights, you can make a rational B-spline, such as a circle:
Choose six points to be interpolated:
Compute distances between control points:
Compute normalized parameters wrt the distances (chord length parametrization):
A cubic B-spline curve with clamped knots will be used:
Set up the square basis matrix to solve:
Solve the linear system to get control points:
Show the interpolating curve with the original data:
Choose 3D points to be interpolated:
Compute distances between control points:
Compute normalized parameters wrt the distances (chord length parametrization):
A cubic B-spline curve with clamped knots will be used:
Set up the square basis matrix to solve:
Solve the linear system to get control points:
Show the interpolating curve with the original data:
Sample a list of points to be approximated with random noise:
Use uniform parametrization:
Define a function to generate clamped knots for a given number of control points and degrees:
Define the basis matrix for least squares:
A cubic B-spline curve with 12 control points will be used for fitting:
Show the data with the curve:
The results with various numbers of control points:
The results with 12 control points and different degrees:
Linear transition from one B-spline curve to another:
A B-spline curve with degree 1 is equivalent to a line:
A Bézier curve is affine invariant:
A B-spline curve lies in the union of convex hulls of subsets of control points:
In 3D, a B-spline curve with planar control points lies in the plane:
BSplineBasis can be used to build up B-spline curve objects:
The individual basis functions have bounded support:
Changing the knots affects the basis functions just as it does the BSplineCurve:
A B-spline curve generated from the average of two sets of control points:
The new curve is the average of two B-spline curves:
New in 7