void pnon_uniform_b_spline_surf3_data (
const Psurf_geom_spline *surf_spline, /* surface geometry spline */ const Ptrim_curve_loop_list *trim_loops, /* list of trimming curve loops */ const Psurf_colr_spline *colr_spline, /* colour spline */ const Psurf_data_spline_list *data_spline /* list of data splines */
)
typedef struct {
Pint u_order; /* u spline order */
Pint v_order; /* v spline order */
Pfloat_list u_knots; /* list of u knot values */
Pfloat_list v_knots; /* list of v knot values */
Pctrl_point3_array ctrl_points; /* array of control points */
} Psurf_geom_spline;
typedef enum {
PB_SPLINE_RATIONAL,
PB_SPLINE_NON_RATIONAL
} Prationality;
typedef struct {
Prationality rationality; /* control point format: [NON] RATIONAL */
Pint_size dims; /* control point array u,v dimensions */
Ppoint3_ptr points; /* array of control points */
} Pctrl_point3_array;
typedef union {
Ppoint3 *point3; /* pointer to 3D points */
Phomo_point4 *homo_point4; /* pointer to 4D homogeneous points */
} Ppoint3_ptr;
typedef struct {
Pint num_trim_loops; /* number of trimming curve loops */
Ptrim_curve_loop *trim_loops; /* array of trimming curve loops */
} Ptrim_curve_loop_list;
typedef struct {
Pint num_trim_curves; /* number of trimming curves */
Ptrim_curve *trim_curves; /* list of trimming curves forming a closed loop */
} Ptrim_curve_loop;
typedef struct {
Pcurve_approx_crit approx_crit; /* trimming curve approximation data record */
Pvis_flag visibility_flag; /* curve visibility flag */
Pint order; /* curve order */
Pfloat_list knots; /* curve knot vector */
Pfloat low_limit; /* curve parameter range lower limit */
Pfloat high_limit; /* curve parameter range upper limit */
Pctrl_point_list ctrl_points; /* curve control points */
} Ptrim_curve;
typedef struct {
Pint u_order; /* u spline order */
Pint v_order; /* v spline order */
Pfloat_list u_knots; /* list of u knot values */
Pfloat_list v_knots; /* list of v knot values */
Pint colr_type; /* colour type */
Pcolr_ctrl_point_array colrs; /* array of colour control points */
} Psurf_colr_spline;
typedef struct {
Prationality rationality; /* control point rationality */
Pint_size dims; /* dimensions of control point array */
Pcolr_ctrl_point_ptr colr_points; /* array of colour control points */
} Pcolr_ctrl_point_array;
typedef union {
Pcolr_rep_ptr points; /* pointer to colour points */
Phomo_colr_rep_ptr homo_points; /* pointer to homogeneous colour points */
} Pcolr_ctrl_point_ptr;
typedef struct {
Pint num_data_splines; /* number of data splines */
Psurf_data_spline *data_splines; /* lists of data splines */
} Psurf_data_spline_list;
typedef struct {
Pint u_order; /* u spline order */
Pint v_order; /* v spline order */
Pfloat_list u_knots; /* list of u knot values */
Pfloat_list v_knots; /* list of v knot values */
Pdata_ctrl_point_array data_points; /* array of data control points */
} Psurf_data_spline;
typedef struct {
Prationality rationality; /* control point rationality */
Pint_size dims; /* control point array u,v dimensions */
Pint points_dims; /* control points dimensionality */
Pfloat *ctrl_points; /* array of control points */
} Pdata_ctrl_point_array;
This function specifies the non-uniform B-spline surface with data primitive.
The NON-UNIFORM B-SPLINE SURFACE 3 WITH DATA element is inserted in the open structure after element pointer or replaces the element indicated by element pointer, depending on the edit mode value. Element pointer is updated and points to the NON-UNIFORM B-SPLINE SURFACE 3 WITH DATA structure element. The values specified in the function are associated with the element.
A NULL value for the trim_loops ,colr_spline and data_splines parameter indicates the corresponding optional data is not supplied.
Attributes associated with Non-Uniform B-Spline Surface 3 With Data :
INTERIOR STYLE
INTERIOR STYLE INDEX
INTERIOR COLOUR
EDGE FLAG
EDGE TYPE
EDGE WIDTH SCALE FACTOR
EDGE COLOUR
SURFACE APPROXIMATION CRITERIA
PARAMETRIC SURFACE CHARACTERISTICS
DATA MAPPING METHOD
If used in one of the two GPHIGS specific modes NRS or NDDS, the effect of this function is different from the effect described in the standard.
In NRS mode, (see OPEN PIPE), the element is not stored in a structure. It is sent to the workstation on which the pipe is opened.
In NDDS mode, (see BEGIN NON DUPLICATE DATA STORE), the element is stored in the structure but its content is not copied into the CSS. GPHIGS stores only the pointer to the user's data.
See GPHIGS user guide for more details on NRS and NDDS modes.
open structure, open pipe (ext), begin non duplicate data storage (ext), non-uniform b-spline surface 3, fill area set, set surface approximation criteria, set parametric surface characteristics, inquire current element content, inquire current element type and size