<<Type>> GM_CubicSpline {Analysis} derived from: GM_PolynomialSpline

Documentation
Cubic splines are similar to line strings in that they are a sequence of segments each with its own defining function. A cubic spline uses the control points and a set of derivative parameters to define a piecewise 3rd degree polynomial interpolation. Unlike line-strings, the parameterization by arc length is not necessarily still a polynomial. Splines have two parameterizations that are used in this standard, the defining one (constructive parameter) and the one that has been reparameterized by arc length to satisfy the requirements in GM_GenericCurve.
The function describing the curve must be C2, that is, have a continuous 1st and 2nd derivative at all points, and pass through the controlPoints in the order given. Between the control points, the curve segment is defined by a cubic polynomial. At each control point, the polynomial changes in such a manner that the 1st and 2nd derivative vectors are the same from either side. The control parameters record must contain vectorAtStart, and vectorAtEnd which are the unit tangent vectors at controlPoint[1] and controlPoint[n] where n = controlPoint.count.
The restriction on "vectorAtStart" and "vectorAtEnd" reduce these sequences to a single tangent vector each.
GM_CubicSpline::vectorAtStart : Vector \\ "degree - 2" is 1
GM_CubicSpline::vectorAtEnd : Vector \\ "degree - 2" is 1

NOTE The actual implementation of the cubic polynomials varies, but the curve so generated is guaranteed to be unique. See [2], [10], [12], [18], and [19] in the bibliography for examples of implementations.
The interpolation mechanism for a GM_CubicSpline is "cubicSpline".
GM_CubicSpline::interpolation : GM_InterpolationMethod = "cubicSpline"

The degree for a GM_CubicSpline is "3".
GM_CubicSpline::degree : Integer = "3"


Parent PackageCoordinate geometryAbstractNo
Export ControlPublicAccessLink Class forNone
Class KindNormalClassCardinalityn
Space ConcurrencySequential
PersistenceYes  


Operations
NameSignatureClass
samplePointGM_PointArray samplePoint ()GM_CurveSegment
boundaryGM_CurveBoundary boundary ()GM_CurveSegment
reverseGM_CurveSegment reverse ()GM_CurveSegment


Attributes
NameClassTypeInitial Value
vectorAtStartGM_PolynomialSplineSequence<Vector> 
vectorAtEndGM_PolynomialSplineSequence<Vector> 
degreeGM_SplineCurveInteger 
knotGM_SplineCurveSequence<GM_Knot> 
controlPointsGM_SplineCurveGM_PointArray 
interpolationGM_CurveSegmentGM_CurveInterpolation"linear"
numDerivativesAtStart[0..1]GM_CurveSegmentInteger0
numDerivativesAtEnd[0..1]GM_CurveSegmentInteger0
numDerivativeInterior[0..1]GM_CurveSegmentInteger0


Associations
NameMy RoleMy ClassOther RoleOther Element
SegmentationsegmentGM_CurveSegmentcurveGM_Curve
--Not Named--baseCurveGM_CurveSegment--Not Named--GM_OffsetCurve


Generalization Relationships
NameClassSupplier
--Not Named--GM_CubicSplineGM_PolynomialSpline
--Not Named--GM_PolynomialSplineGM_SplineCurve
--Not Named--GM_SplineCurveGM_CurveSegment


Realize Relationships
NameClassSupplier
--Not Named--GM_CurveSegmentGM_GenericCurve