/// <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};
        }