PK_BCURVE_create_spline_o_t   

struct PK_BCURVE_create_spline_o_s
    {
    int                     o_t_version;     --- options structure version

    PK_INTERVAL_t           param_interval;  --- parameter range for the
                                             --- B-curve (0,1)

    int                     n_parameters;    --- number of parameters (0)
    const double           *parameters;      --- parameters for 'positions'
                                             --- (NULL)
    const int              *param_indices;   --- indices linking 'parameters'
                                             --- to 'positions' (NULL)

    int                     n_derivs;        --- number of derivatives (0)
    const PK_VECTOR_t      *derivs;          --- derivatives at 'positions'
                                             --- (NULL)
    const int              *deriv_orders;    --- order of each derivative
                                             --- (NULL)
    const int              *deriv_indices;   --- indices linking 'derivs' to
                                             --- 'positions' (NULL)

    int                     degree;          --- degree for B-curve (0)
    PK_LOGICAL_t            is_periodic;     --- whether B-curve is periodic
                                             --- (PK_LOGICAL_false)

    int                     n_knots;         --- number of knots supplied (0)
    const double           *knots;           --- the knots (NULL)
    const int              *knot_mults;      --- multiplicities of the knots
                                             --- (NULL)
    PK_BCURVE_overdefined_t overdefined;     --- behaviour if overdefined
                                             --- (PK_BCURVE_overdefined_fail_c)
    PK_BCURVE_clamp_t       clamp;           --- clamp to apply to the B-curve
                                             --- (PK_BCURVE_clamp_no_c)
    PK_LOGICAL_t            have_clamp_axes; --- whether 'clamp_axes' are
                                             --- supplied
                                             --- (PK_LOGICAL_false)
    PK_AXIS2_sf_t           clamp_axes;      --- clamp axes
    };

typedef struct PK_BCURVE_create_spline_o_s PK_BCURVE_create_spline_o_t;



This options structure defines optional controls for creating a B-curve by
splining.

Used in:

PK_BCURVE_create_spline


It contains the following options:

'param_interval'    Parameter interval for the B-curve.  (0,1)

'n_parameters'      Number of parameters supplied. It must be no greater
                    than 'n_positions'.  (0)

'parameters'        An array of length 'n_parameters'. If this option is
                    not NULL then the resultant B-curve will interpolate
                    the specified 'positions' at the corresponding
                    'parameters'.  The parameters must lie in the
                    interval 'param_interval' and be monotonically
                    increasing with respect to the order of the
                    'positions'. (NULL)

'param_indices'     An array of length 'n_parameters' giving the index
                    of the position in 'positions' that has the parameter
                    given by the corresponding entry in 'parameters'. (NULL)

'n_derivs'          Number of derivatives supplied. (0)

'derivs'            An array of length 'n_derivs'. If this option is
                    not NULL then the resultant B-curve will have
                    the specified derivatives at the corresponding
                    'positions'. The order of the derivatives is
                    specified in 'deriv_orders'. (NULL)

'deriv_orders'      An array of length 'n_derivs' giving the order
                    of the corresponding derivative in 'derivs'.
                    Values must be less than four.  (NULL)

'deriv_indices'     An array of length 'n_derivs' giving the index
                    of the position in 'positions' that has the
                    derivative given by the corresponding entry in
                    'derivs'. (NULL)

                    The maximum number of derivatives of a particular order
                    that can be supplied is 'n_positions'.  First order
                    derivatives may only have magnitude zero at the
                    start or end of the B-curve.

'degree'            The degree of the B-curve.  If this is zero, Parasolid
                    will choose an appropriate degree.  Otherwise it
                    must be greater than zero. (0)

'is_periodic'       Whether the B-curve should be periodic. (PK_LOGICAL_false)

'n_knots'           Number of knots supplied. (0)

'knots'             An array of length 'n_knots' of distinct knot values
                    for the B-curve. (NULL)

'knot_mults'        An array of length 'n_knots' specifying the
                    multiplicities of the knots. (NULL)

'overdefined'       If a knotset is provided using the 'knots' and
                    'knot_mults' arrays, then this option controls the
                    behaviour if the position, parameter and derivative
                    conditions (locally) overdefine a spline with the given
                    knotset. Possible values are:

                        PK_BCURVE_overdefined_fail_c: Fail if the spline is
                        overdefined. Therefore sufficient knots must be
                        provided to allow the imposition of the given
                        'positions' and 'derivs'.

                        PK_BCURVE_overdefined_insert_c: The resultant B-curve
                        will have additional knots inserted in order to match
                        the requested 'positions' and 'derivs'. Therefore the
                        supplied knotset will be a subset of the knots in the
                        resultant B-curve.

                    If a knotset is not provided, then this option has no
                    effect.

'clamp'             Optionally applies a clamp to the resultant B-curve.
                    Clamping the spline can make it behave in a more controlled
                    manner by restricting it to the box of the supplied
                    'positions'.

                    If 'clamp' is set to a value other than
                    PK_BCURVE_clamp_no_c, then:
                      o A knotset must not be provided.
                      o 'degree' must be equal to two or three.
                      o No derivative conditions are allowed, except setting
                        the first derivative of the first or last positions of
                        the spline to the zero vector.

                    The clamp planes will be a set of three orthogonal planes,
                    whose orientation is specified by 'clamp_axes'.
                    (PK_BCURVE_clamp_no_c)

'have_clamp_axes'   This option must be set to PK_LOGICAL_true if and only if
                    'clamp' is set to a value other than PK_BCURVE_clamp_no_c.
                    (PK_LOGICAL_false)

'clamp_axes'        If 'clamp' is set to a value other than
                    PK_BCURVE_clamp_no_c, then this field controls the
                    orientation of the clamp plane axes. The 'location' field
                    is ignored.