private void traverseClusters(ClusterConvexHull parent, Cluster cluster, double padding)
        {
            ClusterConvexHull hull = new ClusterConvexHull(cluster, parent);

            hulls.Add(hull);
            foreach (var v in cluster.nodes)
            {
                hulls.Add(new RCHull(hull, v, padding));
            }
            foreach (var c in cluster.clusters)
            {
                traverseClusters(hull, c, padding);
            }
        }
        public RCHull(ClusterConvexHull parent, Node mNode, double padding)
        {
            //var node = (FastIncrementalLayout.Node)mNode.AlgorithmData;
            //this.w2 = node.width / 2.0 + padding;
            //this.h2 = node.height / 2.0 + padding;
            this.w2     = mNode.Width / 2.0 + padding;
            this.h2     = mNode.Height / 2.0 + padding;
            this.Parent = parent;

            boundary = new Polyline(new Point[] {
                new Point(-w2, -h2),
                new Point(-w2, h2),
                new Point(w2, h2),
                new Point(w2, -h2)
            });
            boundary.Closed           = true;
            translatedBoundary        = new Polyline(boundary);
            translatedBoundary.Closed = true;
            this.mNode = mNode;
        }
 /// <summary>
 /// The convex hull of the constituents of a Cluster
 /// </summary>
 /// <param name="cluster"></param>
 /// <param name="parent"></param>
 public ClusterConvexHull(Cluster cluster, ClusterConvexHull parent)
 {
     this.cluster = cluster;
     this.Parent  = parent;
 }
 private void traverseClusters(ClusterConvexHull parent, Cluster cluster, double padding) {
     ClusterConvexHull hull = new ClusterConvexHull(cluster, parent);
     hulls.Add(hull);
     foreach (var v in cluster.nodes) {
         hulls.Add(new RCHull(hull, v, padding));
     }
     foreach (var c in cluster.clusters) {
         traverseClusters(hull, c, padding);
     }
 }
 /// <summary>
 /// The convex hull of the constituents of a Cluster
 /// </summary>
 /// <param name="cluster"></param>
 /// <param name="parent"></param>
 public ClusterConvexHull(Cluster cluster, ClusterConvexHull parent) {
     this.cluster = cluster;
     this.Parent = parent;
 }
        public RCHull(ClusterConvexHull parent, Node mNode, double padding) {
            //var node = (FastIncrementalLayout.Node)mNode.AlgorithmData;
            //this.w2 = node.width / 2.0 + padding;
            //this.h2 = node.height / 2.0 + padding;
            this.w2 = mNode.Width / 2.0 + padding;
            this.h2 = mNode.Height / 2.0 + padding;
            this.Parent = parent;

            boundary = new Polyline(new Point[]{
                new Point(-w2, -h2),
                new Point(-w2, h2),
                new Point(w2, h2),
                new Point(w2, -h2)
            });
            boundary.Closed = true;
            translatedBoundary = new Polyline(boundary);
            translatedBoundary.Closed = true;
            this.mNode = mNode;
        }