Surfaces: Curve Segment List

Element type: miSCENE_CURVE
Data type: miCurve
Sizes: int no_curves
Defaults: as described below
enum miCurve_type {
        miCURVE_TRIM,
        miCURVE_HOLE,
        miCURVE_SPECIAL,
        miCURVE_SPACE
};

typedef struct miCurve {
        miApprox          approx;       /* approx techn. for surface */
        miBoolean         new_loop;     /* F=concat to prev, T=begin new */
        miUshort          ctl_dim;      /* control point dimension 2 or 3 */
        miUshort          degree;       /* from basis, for ease in GAP */
        miGeoRange        range;        /* min/max for curve params. */
        miGeoIndex        no_parms;     /* number of curve parameters */
        miGeoIndex        no_ctls;      /* number of control points */
        miGeoIndex        no_specpnts;  /* number of special points */
        miGeoIndex        scalar_idx;   /* index into curve_scalar list */
        miGeoIndex        specpnt_idx;  /* index into special points list */
        miGeoIndex        basis_idx;    /* index into basis list */
        enum miCurve_type type;
        int               pad;          /* not used */
} miCurve;

A translator must provide: type, approx, new_loop, ctl_dim, degree, range, no_parms, no_ctls, scalar_idx, basis_idx.

A translator may provide: no_specpnts, specpnt_idx.

type specifies what the curve is used for. It must be one of miCURVE_TRIM, miCURVE_HOLE, miCURVE_SPECIAL or miCURVE_SPACE. The default is miCURVE_TRIM.

approx is the approximation technique as described above, in the miFace description.

new_loop is miTRUE for every new loop. Loops can be pieced together from multiple consecutive curves. The default is miTRUE.

ctl_dim is the control point dimension; 2 for UV curves or 3 for space curves. The default is 2.

degree is the degree of the curve. The default is 3.

range is the range over which the curve is evaluated. The value depends on the parameter list. The defaults are 0.0 and 1.0.

no_parms is the length of the parameter vectors.

no_ctls is the number of control points for this curve. The number of scalars required in the curve scalar list is no_ctls · ctl_dim.

no_specpoints is the number of special points to be included in the approximation.

scalar_idx is the index of the first scalar in the curve scalar list (also anchored in the object, see above). The scalar list for one curve consists of the parameter vector, followed by the control points (all X first, then all Y, then all Z, if present).

specpnt_idx is the index of the first special point in the special points list (anchored in the object) to use.

basis_idx is the index of the basis in the basis list (anchored in the object) to use.

type describes what the curve is used for: trimming, hole, special, or space curve.

Copyright © 1986-2009 by mental images GmbH