PK_BODY_imprint_cus_shadow   

PK_ERROR_code_t                        PK_BODY_imprint_cus_shadow
(
--- received arguments ---
const int                              n_bodies,        --- number of bodies
const PK_BODY_t                        bodies[],        --- bodies
const PK_TRANSF_t                      transfs[],       --- body transformation
const PK_VECTOR1_t                     view_direction,  --- viewing direction
const PK_BODY_imprint_cus_shadow_o_t  *options,         --- option structure

--- returned arguments ---
int                             *const n_edges,         --- number of edges
PK_EDGE_t                      **const edges,           --- new edges
int                             *const n_visible_faces, --- number of visible
                                                        --- faces
PK_FACE_t                      **const visible_faces    --- visible faces
)


This function takes the given bodies and splits their faces into portions
which are completely visible in the given view direction by imprinting the
'shadow' curves cast by overlapping faces in front.

This function does not support facet geometry [NF]


Specific Errors:
  PK_ERROR_bad_component          (MILD)   'transfs' is inappropriate
  PK_ERROR_unsuitable_entity      (MILD)    body is not a sheet or a solid body
  PK_ERROR_duplicate_array_item   (MILD)    body is supplied multiple times
  PK_ERROR_face_check_fails       (SERIOUS) face checker found a fault on a
                                            modified face
  PK_ERROR_imprint_shadows_failed (SERIOUS) Function failure


The function is only implemented for entities of type PK_BODY_type_solid_c or
PK_BODY_type_sheet_c.

If the 'transfs' argument is not NULL, it refers to an array of 'n_bodies'
PK_TRANSF_t entities. Each body is transformed by its corresponding entry in
'transfs'. Transforms may contain translation and rotation but not perspective
terms. If an instance does not need to be transformed, its 'transfs' entry can
be set to PK_ENTITY_null. The imprinted shadow edges will lie on the body
in the position where shadows would have been cast had the transformation
actually been explicitly applied to the body

If the 'transfs' argument is NULL, no transformations are applied to the
bodies.

Bodies may not appear in the 'bodies' array more than once regardless of
whether there is a transformation supplied for each entry.

'edges' returns the new edges created by splitting the original face into
visible and invisible portions. These edges could either correspond to
silhouette curves, where the original face itself is divided into front- and
back-facing regions, or shadow curves where another face overlaps the original
face when viewed from the supplied view direction.

The result body will consist of faces which are either entirely invisible,
edge-on or visible when viewed in the direction specified. If the option
'want_visible_faces' is selected in the options structure, the 'visible_faces'
array will indicate which faces are entirely visible.

See Imprinting shadow curves for more information.