 |
PK_BCURVE_join |
|
PK_ERROR_code_t PK_BCURVE_join
(
--- received arguments ---
int n_bcurves, --- number of bcurves ( >=2 )
const 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.
The resulting curve will be parameterised on the interval [0, 1]; see
Combining B-curves for more information.
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 satisfy 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.