Test if a 3D point belongs to an edge.

   Usage
   B = isPointOnEdge3d(POINT, EDGE)
   B = isPointOnEdge3d(POINT, EDGE, TOL)

   Description
   B = isPointOnEdge3d(POINT, EDGE)
   with POINT being [xp yp zp], and EDGE being [x1 y1 z1  x2 y2 z2],
   returns TRUE if the point is located on the edge, and FALSE otherwise.

   B = isPointOnEdge3d(POINT, EDGE, TOL)
   Specify an optilonal tolerance value TOL. The tolerance is given as a
   fraction of the norm of the edge direction vector. Default is 1e-14. 

   B = isPointOnEdge3d(POINTARRAY, EDGE)
   B = isPointOnEdge3d(POINT, EDGEARRAY)
   When one of the inputs has several rows, return the result of the test
   for each element of the array tested against the single parameter.

   B = isPointOnEdge3d(POINTARRAY, EDGEARRAY)
   When both POINTARRAY and EDGEARRAY have the same number of rows,
   returns a column vector with the same number of rows.
   When the number of rows are different and both greater than 1, returns
   a Np-by-Ne matrix of booleans, containing the result for each couple of
   point and edge.

   Examples
   % create a point array
   points = [10 10 20;15 10 20; 30 10 20];
   % create an edge array
   vertices = [10 10 20;20 10 20;20 20 20;10 20 20];
   edges = [vertices vertices([2:end 1], :)];

   % Test one point and one edge
   isPointOnEdge3d(points(1,:), edges(1,:))
   ans = 
       1
   isPointOnEdge3d(points(3,:), edges(1,:))
   ans = 
       0

   % Test one point and several edges
   isPointOnEdge3d(points(1,:), edges)'
   ans =
        1     0     0     1

   % Test several points and one edge
   isPointOnEdge3d(points, edges(1,:))'
   ans =
        1     1     0

   % Test N points and N edges
   isPointOnEdge3d(points, edges(1:3,:))'
   ans =
        1     0     0

   % Test NP points and NE edges
   isPointOnEdge3d(points, edges)
   ans =
        1     0     0     1
        1     0     0     0
        0     0     0     0


   See also
   edges3d, points3d, isPointOnLine3d

Package: matgeom