## Interface BSplineCurve

• All Superinterfaces:
`CurveSegment`, `GenericCurve`, `SplineCurve`
All Known Subinterfaces:
`Bezier`

```@UML(identifier="GM_BSplineCurve",
specification=ISO_19107)
public interface BSplineCurve
extends SplineCurve```
A piecewise parametric polynomial or rational curve described in terms of control points and basis functions. If the weights in the knots are equal then it is a polynomial spline. If not, then it is a rational function spline. If the boolean `isPolynomial()` is set to `true` then the weights shall all be set to 1. A B-spline curve is a piecewise Bézier curve if it is quasi-uniform except that the interior knots have multiplicity "degree" rather than having multiplicity one. In this subtype the knot spacing shall be 1.0, starting at 0.0. A piecewise Bézier curve that has only two knots, 0.0, and 1.0, each of multiplicity (degree+1), is equivalent to a simple Bézier curve.
Since:
GeoAPI 2.0
`GeometryFactory.createBSplineCurve(int, org.opengis.geometry.coordinate.PointArray, java.util.List<org.opengis.geometry.coordinate.Knot>, org.opengis.geometry.coordinate.KnotType)`
• ### Method Summary

All Methods
Modifier and Type Method Description
`SplineCurveForm` `getCurveForm()`
Identifies particular types of curve which this spline is being used to approximate.
`int` `getDegree()`
The algebraic degree of the basis functions.
`KnotType` `getKnotSpec()`
Gives the type of knot distribution used in defining this spline.
`boolean` `isPolynomial()`
`true` if this is a polynomial spline.
• ### Methods inherited from interface CurveSegment

`getBoundary, getCurve, getInterpolation, getNumDerivativesAtEnd, getNumDerivativesAtStart, getNumDerivativesInterior, getSamplePoints, reverse`
• ### Methods inherited from interface GenericCurve

`asLineString, forConstructiveParam, forParam, getEndConstructiveParam, getEndParam, getEndPoint, getParamForPoint, getStartConstructiveParam, getStartParam, getStartPoint, getTangent, length, length`
• ### Methods inherited from interface SplineCurve

`getControlPoints, getKnots`
• ### Method Detail

• #### getDegree

```@UML(identifier="degree",
obligation=MANDATORY,
specification=ISO_19107)
int getDegree()```
The algebraic degree of the basis functions.
Specified by:
`getDegree` in interface `SplineCurve`
• #### getCurveForm

```@UML(identifier="curveForm",
obligation=OPTIONAL,
specification=ISO_19107)
SplineCurveForm getCurveForm()```
Identifies particular types of curve which this spline is being used to approximate. It is for information only, used to capture the original intention. If no such approximation is intended, then the value of this attribute is `null`.
• #### getKnotSpec

```@UML(identifier="knotSpec",
obligation=OPTIONAL,
specification=ISO_19107)
KnotType getKnotSpec()```
Gives the type of knot distribution used in defining this spline. This is for information only and is set according to the different construction-functions.
• #### isPolynomial

```@UML(identifier="isPolynomial",
obligation=MANDATORY,
specification=ISO_19107)
boolean isPolynomial()```
`true` if this is a polynomial spline.