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-2011 by mental images GmbH