OUBSPS ( bs, ctrl, dim, uorder, vorder, ncol, nrow, uknots, vknots, props,
===========================================================================
nprops, sense, ifail )
======================
Output B-surface in B-spline form
Receives:
KI_tag_b_surface *bs --- B-surface
Returns:
KI_tag_list_dbl *ctrl --- control points
KI_int_dimension *dim --- dimension of control points
KI_int_order *uorder --- order of surface in u
KI_int_order *vorder --- order of surface in v
KI_int_nitems *ncol --- number of cols of control points
KI_int_nitems *nrow --- number of rows of control points
KI_tag_list_dbl *uknots --- knot vector in the u direction
KI_tag_list_dbl *vknots --- knot vector in the v direction
<KI_tag_list_int> *props --- list of surface properties
<KI_int_nitems> *nprops --- number of surface properties
KI_cod_logical *sense --- surface sense
KI_cod_error *ifail --- failure indicator
Description:
This function outputs a B-surface in B-spline form.
Dimension of control points 'dim':
. For rational surfaces 'dim'=4.
. For non-rational surfaces 'dim'=3.
Order of the surface in u and v 'uorder' and 'vorder':
. The order = degree + 1.
. The minimum order is 2.
Control points 'ctrl':
. This is a real list containing 'ncol'*'nrow' vectors of dimension 'dim'.
. The vectors are output row by row.
. For non-rational surfaces, the vectors are points in 3-space and are
returned [x0,y0,z0,x1,y1,z1,...].
. For rational surfaces each vector contains a point in 3-space followed by a
weight for the point. The points are returned [x0,y0,z0,w0,x1,y1,z1,w1,...].
The weights are positive.
Number of columns of control points 'ncol':
. For surfaces with non-periodic rows 'ncol' >= 'uorder'.
. For surfaces with periodic rows 'ncol' >= 3.
Number of rows of control points 'nrow':
. For surfaces with non-periodic columns 'nrow' >= 'vorder'.
. For surfaces with periodic columns 'nrow' >= 3.
Knot vector in the u direction 'uknots':
. The knot values form a non-decreasing sequence.
. If the rows are not periodic there are ('ncol' + 'uorder') knot values.
. If the rows are periodic there are ('ncol' + 1) knot values.
. The knot values follow the rules described in CRBSPS.
Knot vector in the v direction 'vknots':
. The knot values form a non-decreasing sequence.
. If the columns are not periodic there are ('nrow' + 'vorder') knot values.
. If the columns are periodic there are ('nrow' + 1) knot values.
. The knot values follow the rules described in CRBSPS.
Properties list 'props':
The following tokens may be returned -
. PAPRPU - the surface is periodic in u (i.e. the rows are periodic).
. PAPRPV - the surface is periodic in v (i.e. the columns are periodic).
The default is that the surface is not periodic.
Number of properties 'nprops':
. Gives the number of properties in the 'props' array.
Surface sense 'sense'
. If 'sense' is KI_true the surface normal is given by the cross product of
the first derivatives of the surface with respect the u and v parameters.
i.e.
normal = Pu X Pv
. If 'sense' is KI_false the surface normal is in opposite to that described
for 'sense' == KI_true.