Ejemplo n.º 1
0
        private List <int> GetMarks(Vec center, int localityRadius)
        {
            var marks    = new List <int>();
            var mark     = new Dictionary <Vec, int>();
            var nextMark = 1;
            var cuboid   = new Cuboid(toFill.R).Intersect(new Cuboid(center, localityRadius));

            foreach (var p in cuboid.AllPoints())
            {
                if (p == center || filled[p])
                {
                    continue;
                }
                if (!mark.ContainsKey(p))
                {
                    mark[p] = nextMark;
                    var component = MoreEnumerable.TraverseDepthFirst(p, cur => cur.GetMNeighbours().Where(next => cuboid.Contains(next) && !filled[next] && !mark.ContainsKey(next)));
                    foreach (var componentItem in component)
                    {
                        mark[componentItem] = nextMark;
                    }
                    nextMark++;
                }
                marks.Add(mark[p]);
            }
            return(marks);
        }