DISTANCEPOINTMESH  Shortest distance between a (3D) point and a triangle mesh.

   DIST = distancePointMesh(POINT, VERTICES, FACES)
   Returns the shortest distance between the query point POINT and the
   triangular mesh defined by the set of vertex coordinates VERTICES and
   the set of faces FACES. VERTICES is a NV-by-3 array, and FACES is a
   NF-by-3 array of vertex indices.
   If FACES is NF-by-4 array, it is converted to a (NF*2)-by-3 array.

   [DIST, PROJ] = distancePointMesh(...)
   Also returns the projection of the query point on the triangular mesh.

   ... = distancePointMesh(..., 'algorithm', ALGO)
   Allows to choose the type of algorithm. Options are:
   * sequential:   process each face sequentially, using the function
               distancePointTriangle3d 
   * vectorized:   vectorized algorithm, usually faster for large number
               of faces
   * auto:         (default) automatically choose the most appropriate
               between sequential and vectorized.

   Example
     [V, F] = torusMesh();
     F2 = triangulateFaces(F);
     P = [10 20 30];
     [D, PROJ] = distancePointMesh(P, V, F2);
     figure; drawMesh(V, F)
     view(3); axis equal; lighting gouraud; light;
     drawPoint3d(P);
     drawPoint3d(PROJ, 'm*');
     drawEdge3d([P PROJ], 'linewidth', 2, 'color', 'b');

   See also
     distancePointTriangle3d

   References
   * "Distance Between Point and Triangle in 3D", David Eberly (1999)
   https://www.geometrictools.com/Documentation/DistancePoint3Triangle3.pdf
   * Distance between a point and a triangle in 3d, by Gwendolyn Fischer.
   * Distance Between Point and Triangulated Surface, by Daniel Frisch.

Package: matgeom