public static Dictionary <string, object> CheckPolyNotches(Polygon2d poly, double distance = 10) { if (!CheckPoly(poly)) { return(null); } bool hasNotches = true; int count = 0, maxTry = 2 * poly.Points.Count; Polygon2d currentPoly = new Polygon2d(poly.Points); while (hasNotches && count < maxTry) { Dictionary <string, object> notchObject = PolygonUtility.RemoveAnyNotches(currentPoly, distance); if (notchObject == null) { continue; } currentPoly = (Polygon2d)notchObject["PolyNotchRemoved"]; for (int i = 0; i < poly.Lines.Count; i++) { int a = i, b = i + 1; if (i == poly.Points.Count - 1) { b = 0; } if (poly.Lines[a].Length < distance && poly.Lines[b].Length < distance) { hasNotches = true; break; } else { hasNotches = false; } } count += 1; } return(new Dictionary <string, object> { { "PolyReduced", (poly) }, { "HasNotches", (hasNotches) }, { "Trials", (count) } }); }