 |
PK_TOPOL_range_local |
|
PK_ERROR_code_t PK_TOPOL_range_local
(
--- received arguments ---
PK_TOPOL_t topol_1, --- first topological entity
PK_TOPOL_t topol_2, --- second topological entity
const PK_TOPOL_range_local_o_t *options, --- options structure
--- returned arguments ---
int *const n_ranges, --- no. local minima
PK_range_2_r_t **const ranges --- range data
)
This function finds the local minimum separations between two topological
entities.
This function does not support facet geometry [NF]
Specific Errors:
PK_ERROR_bad_option_data bad option data given (MILD)
PK_ERROR_wrong_entity given topology is of the wrong type (MILD)
PK_ERROR_missing_geom given topology has missing geometry (MILD)
PK_ERROR_bad_parameter bad parameter given (MILD)
PK_ERROR_no_closest_approach failed to find closest approach (MILD)
PK_TOPOL_range_local will find the local closest approaches between 'topol_1'
and 'topol_2'.
The following topology types are supported:
- vertex, edge, face, and body.
An array of range data will be returned in 'ranges', this consists of an array
of structures of type PK_range_2_r_t, each of which contains a double
'distance', which is the separation distance between the two topological
entities provided, and an array of two structures of type PK_range_end_t,
which provide information on each end of the line of separation as follows:
'entity' : in the first structure this will contain the topology
supplied in 'topol_1' and in the second structure this
will contain the topology supplied in 'topol_2'.
'sub_entity' : the topology of the lowest dimensionality which contains
the end position. e.g if a body is passed in as 'topol_1'
and the end position is found on a vertex then 'entity'
will return the body and 'sub_entity' will return the
vertex. If 'sub_entity' would be the same as 'entity'
then no 'sub_entity' will be returned.
'vector' : the end position on 'entity'.
'parameters' : an array of two parameters of the end position holding
curve or surface parameter(s). Which parameterisation is
used is firstly dependent upon the geometry of the
entity returned and secondly upon the geometry of the
sub_entity (if identified). If curve parameterisation
is used the 2nd parameter should be ignored.
The table below indicates which parameterisation
is used and when:
-------------------------------------------------------
| Entity | Identified | Geometry used for |
| | Sub-Entity | solution parameterisation |
|-----------|--------------|----------------------------|
| | | |
| vertex | none | none |
| | | |
| edge | none | curve of the edge |
| edge | vertex | curve of the edge |
| | | |
| face | none | surface of the face |
| face | edge | surface of the face |
| face | vertex | surface of the face |
| | | |
| body | face | surface of the face |
| body | edge | curve of the edge |
| body | vertex | none |
| | | |
-------------------------------------------------------
The curve and surface parameter values returned
will be the same as would be returned by the
parameterisation functions PK_CURVE_parameterise_vector
and PK_SURF_parameterise_vector.
'region' : a logical value - whether the solution is regional. If
PK_LOGICAL_true, the solution is a regional solution upon
the entity (ie. it is possible to move from solution point
pair without the distance changing )
The identification of such a regional solution is not
guaranteed.
'negative' : a logical value - whether the point lies inside or outside
the body.
If 'entity' is a body and the point at the other end of
the separation lies inside the body, 'negative' will
return PK_LOGICAL_true, otherwise PK_LOGICAL_false will
be returned.
See Calculating minimum and maximum distance for more information.