 |
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.