PK_VERTEX_spin   


PK_ERROR_code_t         PK_VERTEX_spin
(
--- received arguments ---
PK_VERTEX_t             vertex,        --- end vertex of wire body
const PK_AXIS1_sf_t    *axis,          --- spin axis
double                  angle,         --- spin angle
PK_LOGICAL_t            local_check,   --- whether local checking will be done

--- returned arguments ---
PK_EDGE_t        *const lateral,       --- new edge
PK_VERTEX_t      *const base,          --- swept vertex
PK_local_check_t *const check_result   --- result of local check
)


This function spins an end vertex of a wire body or the sole vertex of a
minimum body into an edge.


Specific Errors:
    PK_ERROR_unsuitable_entity     Vertex is unsuitable for spin
    PK_ERROR_wrong_entity          Bad arguments
    PK_ERROR_non_manifold          Can't spin vertex with non-manifold boundary
    PK_ERROR_bad_angle             Bad angle


The vertex to be spun is moved along an arc specified by the axis leaving
a lateral edge in its wake resulting in a wire body being produced.



Suitable Spin Entities:

   . End vertices (in contradistinction to interior vertices) of wire bodies
   . Sole vertex of minimum body
   . Spun vertex must not be coincident with the axis of rotation.

Attempting to spin a vertex which is not one of the above will give rise
to the error PK_ERROR_unsuitable_entity.



Permissible Spins:

   . A vertex may not be spun through more than 2pi or less than -2pi.
     It is not possible to perform full spins (where the angle is 2pi or
     -2pi) on end vertices of a wire.


After a spin any coincident topology will not be fused or united.

In general this procedure may give rise to self-intersecting body
boundaries, which could cause unpredictable errors later.

If local checking local_check is PK_LOGICAL_true, consistency checks will be
made on newly created topological and geometrical entities, and the state
of the body returned in check_result. A result of PK_local_check_ok_c
indicates the body is valid. A result of PK_local_check_failed_c indicates
the body is self-intersecting and further modelling operations on it may fail.

If local_check is PK_LOGICAL_false, local checking will be switched off and
the result returned will be PK_local_check_no_c.

A self-intersecting body can be returned.