Пример #1
0
        /// <summary>
        /// Return gridcells group with id matched bubbles around free gridcell
        /// </summary>
        /// <param name="freeGCell"></param>
        /// <returns></returns>
        public MatchGroup GetIdArea(GridCell freeGCell, int id)
        {
            MatchGroup res        = new MatchGroup();
            MatchGroup equalNeigh = new MatchGroup();
            MatchGroup neighTemp;

            if (freeGCell)
            {
                NeighBors nCells = new NeighBors(freeGCell, id); // res.Add(freeGCell);
                equalNeigh.AddRange(nCells.EqualIDCells);        //equalNeigh.AddRange(gCell.EqualNeighBornCells());
                while (equalNeigh.Length > 0)
                {
                    res.AddRange(equalNeigh.cells);
                    neighTemp = new MatchGroup();
                    foreach (var item in equalNeigh.cells)
                    {
                        nCells = new NeighBors(item, id);
                        neighTemp.AddRange(nCells.EqualIDCells); // neighTemp.AddRange(item.EqualNeighBornCells());
                    }
                    equalNeigh = neighTemp;
                    equalNeigh.Remove(res.cells);
                }
            }
            res.Remove(freeGCell);
            return(res);
        }
Пример #2
0
        /// <summary>
        /// Return gridcells group with id matched  around gCell
        /// </summary>
        /// <param name="gCell"></param>
        /// <returns></returns>
        public MatchGroup GetMatchIdArea(GridCell gCell)
        {
            MatchGroup res = new MatchGroup();

            if (!gCell.Match || !gCell.IsMatchable)
            {
                return(res);
            }

            MatchGroup equalNeigh = new MatchGroup();
            MatchGroup neighTemp;
            int        id = gCell.Match.GetID();

            res.Add(gCell);

            equalNeigh.AddRange(gCell.Neighbors.GetMatchIdCells(id, true)); //equalNeigh.AddRange(gCell.EqualNeighBornCells());
            while (equalNeigh.Length > 0)
            {
                res.AddRange(equalNeigh.Cells);
                neighTemp = new MatchGroup();
                foreach (var item in equalNeigh.Cells)
                {
                    neighTemp.AddRange(item.Neighbors.GetMatchIdCells(id, true)); // neighTemp.AddRange(item.EqualNeighBornCells());
                }
                equalNeigh = neighTemp;
                equalNeigh.Remove(res.Cells);
            }
            return(res);
        }
Пример #3
0
        /// <summary>
        /// Return gridcells group with ids matched bubbles around free gridcell
        /// </summary>
        /// <param name="freeGCell"></param>
        /// <returns></returns>
        public MatchGroup GetIdArea(GridCell freeGCell, List <int> ids)
        {
            MatchGroup res = new MatchGroup();

            for (int i = 0; i < ids.Count; i++)
            {
                res.Merge(GetIdArea(freeGCell, ids[i]));
            }
            res.Remove(freeGCell);
            return(res);
        }