ENPIFA   

Equivalent PK functions: PK_FACE_contains_vectors

ENPIFA ( face, nparms, params, npvecs, pvecs, nopts, opts, optdata, enclos, 
============================================================================
         topol, ifail )
         ==============

  Enquire if points in face

Receives:
  KI_tag_face              *face           --- face
 <KI_int_nitems>           *nparms         --- number of parameter pairs
  double                    params[2*nparms] --- u v parameter pairs
 <KI_int_nitems>           *npvecs         --- number of pvecs
  double                    pvecs[3*npvecs] --- pvecs
 <KI_int_nitems>           *nopts          --- number of options
  KI_cod_pfop               opts[nopts]    --- options
 <KI_tag_list_entity>       optdata[nopts] --- option data

Returns:
  KI_cod_encl               enclos[nparms==0?npvecs:nparms] --- enclosure
  KI_tag_topology           topol[nparms==0?npvecs:nparms] --- sub topology
  KI_cod_error             *ifail          --- failure code

Specific errors:
  KI_unsuitable_entity      can't do test on invalid entity
  KI_no_geometry            no geometry on edge
                            no geometry on face
  KI_bad_option_data        bad option data
  KI_duplicate_item         Duplicate item in option data
  KI_not_same_length        arrays not the same length
  KI_nitems_le_0            arrays both length zero

Description:

  Determines whether the points lie inside, outside or on the boundary of
  the face.

  The points must be given as either an array of parameter pairs ('params'), an
  array of co-ordinates ('pvecs') or both where the parameter pairs correspond
  to the co-ordinates in the same order (i.e. the number of parameter pairs
  'nparms' and the number of pvecs 'npvecs' must be either equal or either
  'nparms' or 'npvecs' = 0 ). It is the user's responsibility to ensure that if
  both 'pvecs' and 'params' are given that they correspond, the function will not
  detect if they don't and in this case the results are not guaranteed.

  The option accepted is:

  PFOPLO: enquire on loops of interest.

  The option PFOPLO takes data of a list of one or more loops from the face and
  considers the containment with respect only to these loops. I.e. if a face
  has a periphery loop and several hole loops and the PFOPLO option is used with
  only the periphery loop, points inside the holes will be regarded as inside
  the face. It is up to the user to ensure that the loops bound a finite area for
  meaningful results to be returned. The function will not detect if this has
  happened.

  For each point an enclosure code is returned to classify the point relative to
  the face. The enclosure codes will be one of:

      ENCLIN    the point lies inside the boundary
      ENCLOU    the point lies outside the boundary
      ENCLON    the point lies 'on' the boundary of the face (i.e. on an edge or
                vertex )

  The interior of a hole is outside the face and the boundary of a hole is part
  of the boundary of the face.

  If the enclosure code is ENCLON, the corresponding element in 'topol' will be
  the vertex or edge that the point lies on, otherwise this will be null.