CCT.NUI.Core.Clustering.ClusterPrototype.Merge C# (CSharp) Method

Merge() public static method

public static Merge ( ClusterPrototype cluster1, ClusterPrototype cluster2 ) : ClusterPrototype
cluster1 ClusterPrototype
cluster2 ClusterPrototype
return ClusterPrototype
        public static ClusterPrototype Merge(ClusterPrototype cluster1, ClusterPrototype cluster2)
        {
            return new ClusterPrototype(Point.Center(cluster1.Center, cluster2.Center), cluster1.points.ToList().Union(cluster2.points).ToList());
        }

Usage Example

        public IList <ClusterPrototype> MergeClustersIfRequired(IList <ClusterPrototype> clusters)
        {
            var clustersToIterateOver = new List <ClusterPrototype>(clusters);

            foreach (var cluster in clustersToIterateOver)
            {
                foreach (var otherCluster in new List <ClusterPrototype>(clusters))
                {
                    if (cluster != otherCluster && this.IsMergeRequired(cluster, otherCluster))
                    {
                        clusters.Remove(cluster);
                        clusters.Remove(otherCluster);
                        clusters.Add(ClusterPrototype.Merge(cluster, otherCluster));
                    }
                }
            }
            return(clusters);
        }