.TH CINTERP 6 "IRIT Version 6.0" .SH NAME CINTERP CurveType CINTERP( ListType PtList, NumericType Order, NumericType Size, ConstantType Param, NumericType Periodic) Computes a Bspline polynomial curve that interpolates or approximates the list of points in PtList. The Bspline curve will have order Order and Size control points, and will be periodic if periodic is none zero. The knots will be spaced according to Param which can be one of PARAM_UNIFORM, PARAM_CHORD or PARAM_CENTRIP. The former prescribes a uniform knot sequence and the latters specify knot spacing according to the chord length and a square root of the chord length. A periodic curve will be coerced to have PARAM_UNIFORM knot sequence. Use of Periodic end conditions can create cases with degenerated linear systems (determinant equal zero). Increase or decrease of the Order of the Bspline by one will resolve the problem. All points in PtList must be of type (E1-E5, P1-P5) control point, or regular PointType. If Size is equal to the number of points in PtList the resulting curve will interpolate the data set. Otherwise, if Size is less than the number of points in PtList the point data set will be least square approximated. In no time can Size be lower than Order. Size of zero forces interpolation by setting Size to the data set size. All interior knots will be distinct preserving maximal continuity. The resulting Bspline curve will have open end conditions. Example: pl = nil(); for ( x = 0, 1, 100, snoc(point(cos(x / 5), sin(x / 5), x / 50 - 1), pl) ); c = CINTERP( pl, 3, 21, PARAM_UNIFORM ); Samples a helical curve at 100 points and least square fit a quadratic Bspline curve with 21 point to the data set. The curve will have a uniform knot spacing.