PK_ERROR_code_t PK_BCURVE_join ( --- received arguments --- int n_bcurves, --- number of bcurves ( >=2 ) PK_BCURVE_t bcurves[], --- bcurves const PK_BCURVE_join_o_t *options, --- options on matching --- returned arguments --- PK_BCURVE_t *const bcurve, --- resulting bcurve int *n_knot_values, --- number of knot values double **const knot_values --- amalgamated knot values ) This function creates a new bcurve by joining together a sequence of bcurves. Specific Errors: PK_ERROR_insufficient_curves insufficient curves to join PK_ERROR_curves_dont_meet curves not sequential PK_ERROR_bad_curves invalid curves for joining At least two B-curves must be supplied (n_bcurves >= 2). The supplied curves must be in the correct order, and the end of each curve (except the last) must coincide with the start of the next. The curves must not be closed. The end of the final curve may coincide with the start of the first, in which case a closed B-curve will be made. The supplied curves are unchanged by the operation. The order of the resulting curve will be the maximum of the orders of the supplied curves. If any of the supplied curves are rational, the resulting curve will be rational. This function can be supplied with a list of preferred values for the knots at the joins between curves. The snap_tolerance will be used to control whether any of these are adopted, it is a measure of how much a knot may be shifted to snap to one of the supplied values, i.e. if the snap_tolerance is at least 1 then most knots should be snapped to the supplied values (if this doesn't affect the existing knot multiplicities). A value of 0.0 will result in snapping only if the knots satisft parametric resolution tests. Large tolerances might result in wide variations in parameter speed and should be avoided. If knot values are supplied then an amalgamated list will be output.