CRCUPC ( curve, bounds, bc, nseg, ifail )
=========================================
Create B-curve from general curve
Receives:
KI_tag_curve *curve --- general curve
KI_vec_position bounds[2] --- start and end of curve
Returns:
KI_tag_b_curve *bc --- B-curve
KI_int_nitems *nseg --- number of segments used
KI_cod_error *ifail --- failure indicator
Specific errors:
KI_bad_end_points curve not defined between bounds
KI_coincident coincident bounds on non-periodic curve
KI_not_on_curve end bound not on curve
start bound not on curve
KI_wrong_entity unsupported curve type
Description:
This function creates a B-curve that is equivalent to a general
curve, so that the curve can be used for example in lofting. Only lines,
circles, ellipses and B-curves are processed by this function. Trimmed curves
with the aforementioned curves as basis curves are also allowed.
The B-curve returned will exactly represent the given curve.
The function may be used to trim curves where a B-curve is required otherwise
CRTRCU should be used to trim curves.
The following table shows the type of curve that will be produced by the
conversion:
original curve | order of | number of | rational
| new curve | segments |
-------------------------------------------------------------
| | |
line | 2 | 1 | no
circle | 4 | 1 or 2 | yes
ellipse | 4 | 1 or 2 | yes
B-curve | as original | between bounds| as original
| | on original |
The bounds of the curve 'bounds' must be supplied in order, start then end.
The new curve will have a parameterisation increasing from start to end.
If the curve is a trimmed curve the bounds are ignored and any valid vectors
should be supplied.