/// <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); }
/// <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); }