private void createClump(IEnumerable <int> component) { var clump = new Clump(component.Select(this.OrdinalToObstacle)); foreach (var obstacle in clump) { obstacle.Clump = clump; } }
private void CreateClumps() { var graph = new BasicGraphOnEdges <IntPair>(this.overlapPairs); var connectedComponents = ConnectedComponentCalculator <IntPair> .GetComponents(graph); foreach (var component in connectedComponents) { // GetComponents returns at least one self-entry for each index - including the < FirstNonSentinelOrdinal ones. if (component.Count() == 1) { continue; } var clump = new Clump(component.Select(this.OrdinalToObstacle)); foreach (var obstacle in clump) { obstacle.Clump = clump; } } }