DISTANCEPOLYGONSNOCROSS Compute the shortest distance between 2 polygons. DIST = distancePolygonsNoCross(POLY1, POLY2) Computes the shortest distance between the boundaries of the two polygons, assuming they do not cross. Each polygon is given by a N-by-2 array containing the vertex coordinates. If the polygons may cross, it is necessary to use the 'distancePolygons' function, that adds a potentially costly test on the intersection. Example % Computes the distance between a square and a triangle poly1 = [10 10;20 10;20 20;10 20]; poly2 = [30 20;50 20;40 45]; distancePolygons(poly1, poly2) ans = 10 See also polygons2d, distancePolygons, distancePolylines, distancePointPolygon
0001 function dist = distancePolygonsNoCross(poly1, poly2) 0002 %DISTANCEPOLYGONSNOCROSS Compute the shortest distance between 2 polygons. 0003 % 0004 % DIST = distancePolygonsNoCross(POLY1, POLY2) 0005 % Computes the shortest distance between the boundaries of the two 0006 % polygons, assuming they do not cross. 0007 % Each polygon is given by a N-by-2 array containing the vertex 0008 % coordinates. 0009 % 0010 % If the polygons may cross, it is necessary to use the 0011 % 'distancePolygons' function, that adds a potentially costly test on the 0012 % intersection. 0013 % 0014 % Example 0015 % % Computes the distance between a square and a triangle 0016 % poly1 = [10 10;20 10;20 20;10 20]; 0017 % poly2 = [30 20;50 20;40 45]; 0018 % distancePolygons(poly1, poly2) 0019 % ans = 0020 % 10 0021 % 0022 % See also 0023 % polygons2d, distancePolygons, distancePolylines, distancePointPolygon 0024 % 0025 0026 % ------ 0027 % Author: David Legland 0028 % e-mail: david.legland@nantes.inra.fr 0029 % Created: 2009-06-17, using Matlab 7.7.0.471 (R2008b) 0030 % Copyright 2009 INRA - Cepia Software Platform. 0031 0032 % compute distance of each vertex of a polygon to the other polygon 0033 dist1 = min(distancePointPolygon(poly1, poly2)); 0034 dist2 = min(distancePointPolygon(poly2, poly1)); 0035 0036 % keep the minimum of the two distances 0037 dist = min(dist1, dist2);