 |
PK_ENTITY_range_end_t |
|
struct PK_ENTITY_range_end_s
{
int index; --- argument index (0)
PK_ENTITY_t entity; --- entity at end of separation
--- (PK_ENTITY_null)
PK_ENTITY_t sub_entity; --- sub entity at end of separation
--- (PK_ENTITY_null)
PK_VECTOR_t vector; --- end position (0.0, 0.0, 0.0)
double parameters[2]; --- parameter(s) at end position (0.0, 0.0)
PK_enclosure_t inside; --- whether other end is inside body
--- (PK_enclosure_unset_c)
};
typedef struct PK_ENTITY_range_end_s PK_ENTITY_range_end_t;
This structure records one end of a line of separation.
Used in:
PK_ENTITY_range_r_t
PK_ENTITY_range_vector_r_t
'index' : this represents the position of the 'entity' in the
input array.
'entity' : the entity supplied in the input array.
'sub_entity' : the topology of the lowest dimensionality which contains
the end position. e.g if a body is passed as an input
entity 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 |
| *edge | fin | curve of the fin |
| *edge | vertex | none |
| | | |
| fin | none | curve of the fin |
| fin | vertex | curve of the fin |
| *fin | vertex | none |
| | | |
| face | none | surface of the face |
| face | edge | surface of the face |
| face | vertex | surface of the face |
| *face | edge | curve of the edge |
| *face | fin | curve of the fin |
| *face | vertex | none |
| | | |
| body | face | surface of the face |
| body | edge | curve of the edge |
| *body | fin | curve of the fin |
| body | vertex | none |
| | | |
+-----------+--------------+----------------------------+
| point | none | none |
| | | |
| curve | none | curve |
| | | |
| surface | none | surface |
+-----------+--------------+----------------------------+
Note: *indicates optional behaviour controlled by the
option 'param_entity' when available.
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.
'inside' : this states whether the point at the other end of the
separation lies inside the body this end lies on, i.e.
whether the line of separation points into and ends
within this body. Only manifold solid bodies are supported
otherwise PK_enclosure_unset_c will be returned.
If the point at the other end of the separation lies inside
the body PK_enclosure_inside_c returned. If the point at
the other end of the separation lies on the body or outside
of the body PK_enclosure_outside_c returned.