struct PK_CURVE_spin_o_s { int o_t_version; PK_LOGICAL_t simplify; --- (PK_LOGICAL_false) PK_LOGICAL_t confine; --- (PK_LOGICAL_false) PK_INTERVAL_t interval; --- ((0,0)) }; typedef struct PK_CURVE_spin_o_s PK_CURVE_spin_o_t; Holds optional controls on spinning a curve around an axis. The structure has the following user fields: 'simplify' If this is set to PK_LOGICAL_false then PK_CURVE_spin_2 will always return a surface of class PK_CLASS_spun. If its value is PK_LOGICAL_true then, if possible, PK_CURVE_spin_2 will return a simpler surface which is equivalent to the surface of revolution. Normally the simpler surface is analytic; for example, a spun line which intersects the axis is equivalent to a cone. Sometimes the simpler surface is a spun surface with a profile different to the curve being spun. This can occur when the whole of the received curve would sweep the spun surface twice, i.e. the surface would be self intersecting at all its points. For example, this occurs when the curve to be spun is a circle which lies in a plane perpendicular to the plane containing its centre and the spin axis. In this case, the profile of the resulting surface is a B-curve equivalent to the part of the curve specified using the option field 'interval' (although the parameterisation of the new profile will, in general, be different to that of the received curve). 'confine' Where the whole of the curve supplied is to be spun, this field should be set to PK_LOGICAL_false. If set to PK_LOGICAL_true this indicates that only a subset of the curve supplied is to be spun. Which subset of the curve is indicated by the interval specified in the option field 'interval'. 'interval' This field is used only where 'confine' is set to PK_LOGICAL_true. The interval specifies the parameter range of the part of the curve that is to be spun. A parameter range may be specified for any case but will only be important in cases where the curve intersects the axis. In these cases, it is ambiguous as to which part of the curve should be spun and this option provides a way of choosing one part to be spun. The parameters must be given in ascending order. The curve is extended from the given parameter range until it meets the spin axis, and this becomes the portion of curve to be spun. If the interval supplied specifies a section of curve that crosses the axis and PK_SESSION_set_check_self_int has been called with value PK_LOGICAL_true, then an error is signalled, otherwise ( PK_SESSION_set_check_self_int was called with PK_LOGICAL_false ) the part of the curve used is undefined. If an interval is specified for cases where the curve does not intersect the axis, the interval is ignored and the whole curve is spun.