internal List <VisibilityEdge> GetAllGraphEdgesWithEndpointInInteriorOf(IEnumerable <Rectangle> rects, double slack = 0.01) { var rtree = new RTree <Rectangle>(); foreach (var rect in rects) { var shrinkedRect = rect.Clone(); shrinkedRect.ScaleAroundCenter(1 - slack); rtree.Add(shrinkedRect, shrinkedRect); } var edges = (from edge in PathRouter.GetAllEdgesVisibilityEdges() let qrect1 = new Rectangle(edge.SourcePoint, edge.SourcePoint) let qrect2 = new Rectangle(edge.TargetPoint, edge.TargetPoint) where rtree.GetAllIntersecting(qrect1).Any() || rtree.GetAllIntersecting(qrect2).Any() select edge).ToList(); return(edges); }
internal List <VisibilityEdge> GetUnusedGraphEdges() { return(PathRouter.GetAllEdgesVisibilityEdges().Where(e => !PathRouter.IsEdgeUsed(e)).ToList()); }