OUBSSU ( surf, urange, vrange, tol, nopts, iopts, ctrl, dim, uorder, vorder,
=============================================================================
ncol, nrow, uknots, vknots, props, nprops, ifail )
==================================================
Outputs a region of a surface in B-Spline form.
Receives:
KI_tag_surface *surf --- surface
KI_dbl urange[2] --- urange of surface
KI_dbl vrange[2] --- vrange of surface
KI_dbl_distance *tol --- tolerance for approximations
<KI_int_nitems> *nopts --- number of options in 'iopts'
KI_cod_srop iopts[nopts] --- conversion options
Returns:
KI_tag_list_dbl *ctrl --- control points
KI_int_dimension *dim --- dimension of control points
KI_int_order *uorder --- order of surface patches in u
KI_int_order *vorder --- order of surface patches 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_error *ifail --- failure code
Specific errors:
KI_tolerances_too_tight tolerance too tight
KI_cant_make_bspline failed to convert geometry
Description:
The function outputs a region of a surface in B-Spline form.
The B-spline will represent the surface exactly if possible, but it may be
necessary to approximate it. If so, 'tol' specifies an upper bound on the
distance between the B-spline and the original surface, which this function
will usually satisfy although this is not guaranteed.
Representations of planes and the rational forms of cylinders, cones, spheres
and tori are exact. When the representation of a B-surface is changed it will,
in general, only be exact when its order is not decreased.
The parameter limits of the new surface are defined using 'urange' and
'vrange'. For each pair of parameter limits, the following rules apply:
(i) The first element must be less than the second.
(ii) Both elements must lie inside the parameter range, as given by
ENSUPA, unless the corresponding parameter is periodic.
In that case the first must lie in the range, and the difference
between the two may not exceed the period.
The format of the output surface is selected by options in 'iopts'. Options
allowed are:-
Option | Description
-------|---------------------------------------
SROPCU | Force output of B-splines of degree 3
SROPNR | Force output of non-rational B-splines
The effects of these options on the representations produced for different
surface types are:-
Planes
| none | SROPCU | SROPCU & |
| | | SROPNR | SROPNR
----------|---------------|--------------|---------------|----------------
'uorder' | 2 | 4 | 4 | 2
'vorder' | 2 | 4 | 4 | 2
'dim' | 3 | 3 | 3 | 3
Cylinders and Cones
| none | SROPCU | SROPCU & |
| | | SROPNR | SROPNR
----------|---------------|--------------|---------------|----------------
'uorder' | 4 | 4 | 4 | 4
'vorder' | 2 | 4 | 4 | 2
'dim' | 4 | 4 | 3 | 3
Spheres and Tori
| none | SROPCU | SROPCU & |
| | | SROPNR | SROPNR
----------|---------------|--------------|---------------|----------------
'uorder' | 4 | 4 | 4 | 4
'vorder' | 4 | 4 | 4 | 4
'dim' | 4 | 4 | 3 | 3
B-surfaces
| none | SROPCU | SROPCU & |
| | | SROPNR | SROPNR
----------|---------------|--------------|---------------|----------------
'uorder' | * | 4 | 4 | * or 4
'vorder' | * | 4 | 4 | * or 4
'dim' | * | * or 3 | 3 | 3
Where * fields are taken from the surface definition. The value of "* or n"
fields is taken from the surface definition if the representation is exact,
otherwise the value n is used.
Swept surfaces
| none | SROPCU | SROPCU & |
| | | SROPNR | SROPNR
----------|---------------|--------------|---------------|----------------
'uorder' | * | 4 | 4 | *
'vorder' | 2 | 4 | 4 | 2
'dim' | * | * or 3 | 3 | 3
Where * fields are derived from the curve which was swept. The value of
"* or n" fields is derived from the swept curve if the representation is
exact, otherwise the value n is used.
Spun surfaces
| none | SROPCU | SROPCU & |
| | | SROPNR | SROPNR
----------|---------------|--------------|---------------|----------------
'uorder' | * | 4 | 4 | 4
'vorder' | 4 | 4 | 4 | 4
'dim' | 4 | 4 | 3 | 3
Where the * field is derived from the curve which was spun.
Offset surfaces
| none | SROPCU | SROPCU & |
| | | SROPNR | SROPNR
----------|---------------|--------------|---------------|----------------
'uorder' | * | 4 | 4 | *
'vorder' | * | 4 | 4 | *
'dim' | * | * | 3 | 3
Where * fields are the same as for the surface which was offset.
All other surfaces
| none | SROPCU | SROPCU & |
| | | SROPNR | SROPNR
----------|---------------|--------------|---------------|----------------
'uorder' | 4 | 4 | 4 | 4
'vorder' | 4 | 4 | 4 | 4
'dim' | 3 | 3 | 3 | 3
The meaning of the values in the arguments 'ctrl', 'dim', 'uorder', 'vorder'
'ncol', 'nrow', 'uknots' and 'vknots' are given under OUBSPS.
Properties list 'props':
The following tokens may be returned -
. PAPRPU - the B-spline surface is periodic in u
. PAPRPV - the B-spline surface is periodic in v
The default is that the B-spline surface is not periodic.
. PAPREX - the B-spline surface represents the original surface exactly.
If this token is not present then the B-spline approximates the
original.
Number of properties 'nprops':
. Gives the number of properties in the 'props' list.