CLPTFA   

Equivalent PK functions: PK_GEOM_range_array_vector
PK_GEOM_range_vector
PK_TOPOL_range_array_vector
PK_TOPOL_range_vector
PK_GEOM_range_local_vector
PK_TOPOL_range_local_vector

CLPTFA ( point, face, nopts, iopts, optdta, fpoint, params, topol, ortho, 
==========================================================================
         ifail )
         =======

  Finds closest point on a face to a given point.

Receives:
  KI_vec_position           point          --- point
  KI_tag_face              *face           --- face
 <KI_int_nitems>           *nopts          --- number of options
  KI_cod_clop               iopts[nopts]   --- estimation options
  KI_tag_list               optdta[nopts]  --- option data

Returns:
  KI_vec_position           fpoint         --- Point on face
  KI_dbl_parameter          params[2]      --- surface parameters at 'point'
 <KI_tag_entity>           *topol          --- topology at closest point
  KI_cod_logical           *ortho          --- indicates whether soln orthogonal
  KI_cod_error             *ifail          --- failure indicator

Specific errors:
  KI_bad_parameter          parameter out of range
  KI_closest_approach_failed failed to find closest approach
  KI_bad_option_data        bad option data
  KI_missing_geom           Supplied face has no associated surface

Description:
  Returns the point 'fpoint' on the face 'face' which is closest to the point
  'point'. If the closest point lies on the boundary of the face the
  corresponding edge or vertex is returned in 'topol', otherwise
  for a solution inside the boundary of the face NULTAG is returned.

  If the entity returned in 'topol' has a tolerance associated with it, the
  solution 'fpoint' will only be accurate and unique to the tolerance of that
  entity.

  If logical code 'ortho' equals KI_true, either the points 'point' and 'fpoint'
  are coincident or the vector between them is orthogonal to the face. In other
  words, when 'ortho' = KI_true the point enquired from ('point') can be
  obtained by offsetting from the solution point ('fpoint') along the surface
  normal (in the +/- direction). 'ortho' = KI_false should only be expected if
  the solution lies on an edge or vertex.
  This function cannot always be guaranteed to find an appropriate point
  on the face, it will perform best if the supplied point is relatively close
  to the face. A solution will only be returned if it is unique.

  The chance of success is greatly increased if an estimate of the
  closest point on the face is supplied. Estimates may be supplied as a
  point known to be close to the solution, or by giving the parameters
  of such a point specified in the parameter space of the surface. The
  form of the surface parametrisations are given in the documentation for
  ENSUPA. In general optimal performance is obtained if both a point and
  its parameters are supplied.
  Estimate types are supplied in the array 'iopts' and the corresponding
  estimate is supplied in 'optdta'. The permissable entries in these arrays
  are:

     'iopts'    | 'optdta'  |  description
       entry    |   entry   |
    ____________|______________________________________________________
      CLOPPT    | list of 3 | Specify coordinates of point close to
                |  doubles  | solution.
      CLOPPR    | list of 2 | Specify parameters corresponding to a
                |  doubles  | point close to the solution.