PK_BCURVE_join   


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.