public static Merge ( |
||
cluster1 | ||
cluster2 | ||
return |
public static ClusterPrototype Merge(ClusterPrototype cluster1, ClusterPrototype cluster2)
{
return new ClusterPrototype(Point.Center(cluster1.Center, cluster2.Center), cluster1.points.ToList().Union(cluster2.points).ToList());
}
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); }