OUSPPC ( bc, pts, npts, props, pdata, nprops, ifail )
=====================================================
Output B-curve as spline points
Receives:
KI_tag_b_curve *bc --- B-curve
Returns:
KI_tag_list_dbl *pts --- spline points
KI_int_nitems *npts --- number of spline points
KI_tag_list_int *props --- curve properties
KI_tag_list_<list> *pdata --- list of data lists
KI_int_nitems *nprops --- number of curve properties
KI_cod_error *ifail --- failure indicator
Specific errors:
KI_bad_knots curve has unsuitable knot vector
KI_unsuitable_entity linear or quadratic curve has more than one segemnt
order of curve is greater than four
Description:
This function outputs a B-curve as spline points, end conditions and a knot
vector. This constitutes sufficient information to recreate the curve
(via CRSPPC).
Restrictions
. The curve must be cubic or lower degree, non-rational and have continuous
first and second derivatives (note that for a linear or quadratic curve to
satisfy these continuity requirements, it must consist of a single
segment).
. If the curve is periodic it must not have any repeated knots.
. If the curve is non-periodic it may only have repeated knots at its ends.
. Any curve created by CRSPPC and not subsequently modified, will satisfy
these conditions.
Spline points 'pts', 'npts':
The spline points are returned in the list of real data 'pts', in order
along the curve. 'npts' points are returned. They correspond to ends of
segments in the original curve.
Curve properties 'props', 'pdata', 'nprops':
The 'props' array contains 'nprops' tokens from the sequence PAPR00. A
particular property may be associated with additional data; if so, this
is returned in a list. The tag of the list is returned in the 'pdata' list,
in the position corresponding to the token in 'props'.
The table shows which tokens may be present, and the data associated with
them. Some tokens are always present, whereas others are only present if the
curve has a particular property.
token | meaning | real data | always present?
---------------------------------------------------------------------
| | |
PAPRPE | curve is periodic | none | NO - the default is
| | | non-periodic
| | |
PAPRCS | derivative returned | derivative vector | present unless
| at start of curve | | curve is periodic
|(clamped end condition)| |
| | |
PAPRCE | derivative returned | derivative vector | present unless
| at end of curve | | curve is periodic
|(clamped end condition)| |
| | |
PAPRKT | knot vector | knot vector | YES
| | |
PAPRCU | the curve is cubic | none | NO
| | |
End conditions PAPRPE, PAPRCS, PAPRCE
Either clamped or periodic end conditions may be returned. Clamped end
conditions refer to either the start or end of the curve, whereas the
periodic end condition refers to both.
. Clamped end conditions return the first derivative, with respect to a
parameter varying between 0 and 1 over the first or last interval,
at the start and end of the curve. The derivative is returned in a
real list of length 3.
. Periodic end conditions imply that the curve is closed, so that the curve
returns to the start point after the final point has been splined. The
curve meets itself with continuity of tangent and curvature.
Knot vector PAPRKT:
A knot vector is always returned. It has the following properties:
. The knot values form a strictly increasing sequence.
. If the curve is not periodic there will be 'npts' knot values.
. If the curve is periodic there will be ('npts'+1) knot values.
Cubic curve PAPRCU:
This token indicates that the curve is cubic.