/// <summary> /// The convex hull of all the points of all the nodes in the cluster /// </summary> private Polyline ComputeConvexHull() { var points = new List <Point>(); foreach (Node v in cluster.Nodes) { CvxHull r = new RCHull(null, v, 0); foreach (PolylinePoint p in r.TranslatedBoundary().PolylinePoints) { points.Add(p.Point); } } foreach (Cluster c in cluster.Clusters) { points.AddRange(new ClusterConvexHull(c, this).TranslatedBoundary()); } return(new Polyline(ConvexHull.CalculateConvexHull(points)) { Closed = true }); }
/// <summary> /// The convex hull of all the points of all the nodes in the cluster /// </summary> private Polyline ComputeConvexHull() { var points = new List<Point>(); foreach (Node v in cluster.Nodes) { CvxHull r = new RCHull(null, v, 0); foreach (PolylinePoint p in r.TranslatedBoundary().PolylinePoints) points.Add(p.Point); } foreach (Cluster c in cluster.Clusters) { points.AddRange(new ClusterConvexHull(c, this).TranslatedBoundary()); } return new Polyline(ConvexHull.CalculateConvexHull(points)) {Closed = true}; }