public override IEnumerable <int> Neighbors(Cells cells, int col, int row) { yield return(cells[col, cells.WrapRow(row - 1)]); yield return(cells[cells.WrapColumn(col + 1), cells.WrapRow(row - 1)]); yield return(cells[cells.WrapColumn(col - 1), row]); yield return(cells[cells.WrapColumn(col + 1), row]); yield return(cells[cells.WrapColumn(col - 1), cells.WrapRow(row + 1)]); yield return(cells[col, cells.WrapRow(row + 1)]); yield return(cells[cells.WrapColumn(col + 1), cells.WrapRow(row - 2)]); yield return(cells[cells.WrapColumn(col - 1), cells.WrapRow(row - 1)]); yield return(cells[cells.WrapColumn(col - 2), cells.WrapRow(row + 1)]); yield return(cells[cells.WrapColumn(col - 1), cells.WrapRow(row + 2)]); yield return(cells[cells.WrapColumn(col + 1), cells.WrapRow(row + 1)]); yield return(cells[cells.WrapColumn(col + 2), cells.WrapRow(row - 1)]); }
public override IEnumerable <int> Neighbors(Cells cells, int col, int row) { bool isRightSideUp = (col + row) % 2 == 0; if (isRightSideUp) { yield return(cells[cells.WrapColumn(col - 1), row]); yield return(cells[cells.WrapColumn(col + 1), row]); yield return(cells[col, cells.WrapRow(row + 1)]); } else { yield return(cells[cells.WrapColumn(col - 1), row]); yield return(cells[cells.WrapColumn(col + 1), row]); yield return(cells[col, cells.WrapRow(row - 1)]); } }
public override IndexPair GetColRowFromXy(Cells cells, int x, int y) { float fX = x; float fY = y; float fColumn = (fX + (float)TriangleCellPainter.HALF_WD) / (float)TriangleCellPainter.HALF_WD_CEIL; float fRow = fY / (float)TriangleCellPainter.CELL_HGT; return(new IndexPair( cells.WrapColumn((int)Math.Round(fColumn)), cells.WrapRow((int)Math.Round(fRow)) )); }
public override IEnumerable<int> Neighbors(Cells cells, int col, int row) { bool isRightSideUp = (col + row) % 2 == 0; if (isRightSideUp) { yield return cells[cells.WrapColumn(col - 1), cells.WrapRow(row -1)]; yield return cells[cells.WrapColumn(col), cells.WrapRow(row -1)]; yield return cells[cells.WrapColumn(col + 1), cells.WrapRow(row - 1)]; yield return cells[cells.WrapColumn(col - 2), cells.WrapRow(row + 1)]; yield return cells[cells.WrapColumn(col - 2), row]; yield return cells[cells.WrapColumn(col - 1), row]; yield return cells[cells.WrapColumn(col - 1), cells.WrapRow(row + 1)]; yield return cells[cells.WrapColumn(col), cells.WrapRow(row + 1)]; yield return cells[cells.WrapColumn(col + 1), cells.WrapRow(row + 1)]; yield return cells[cells.WrapColumn(col + 2), cells.WrapRow(row + 1)]; yield return cells[cells.WrapColumn(col + 2), row]; yield return cells[cells.WrapColumn(col + 1), row]; } else { yield return cells[cells.WrapColumn(col - 1), cells.WrapRow(row + 1)]; yield return cells[cells.WrapColumn(col), cells.WrapRow(row + 1)]; yield return cells[cells.WrapColumn(col + 1), cells.WrapRow(row + 1)]; yield return cells[cells.WrapColumn(col - 2), cells.WrapRow(row - 1)]; yield return cells[cells.WrapColumn(col - 2), row]; yield return cells[cells.WrapColumn(col - 1), row]; yield return cells[cells.WrapColumn(col - 1), cells.WrapRow(row - 1)]; yield return cells[cells.WrapColumn(col), cells.WrapRow(row - 1)]; yield return cells[cells.WrapColumn(col + 1), cells.WrapRow(row - 1)]; yield return cells[cells.WrapColumn(col + 2), cells.WrapRow(row - 1)]; yield return cells[cells.WrapColumn(col + 2), row]; yield return cells[cells.WrapColumn(col + 1), row]; } }
public override IndexPair GetColRowFromXy(Cells cells, int x, int y) { float fX = x; float fY = y; float fColumn = (fX + (float)TriangleCellPainter.HALF_WD) / (float)TriangleCellPainter.HALF_WD_CEIL; float fRow = fY / (float)TriangleCellPainter.CELL_HGT; return new IndexPair( cells.WrapColumn((int)Math.Round(fColumn)), cells.WrapRow((int)Math.Round(fRow)) ); }
public override IEnumerable<int> Neighbors(Cells cells, int col, int row) { yield return cells[col, cells.WrapRow(row - 1)]; yield return cells[cells.WrapColumn(col + 1), row]; yield return cells[col, cells.WrapRow(row + 1)]; yield return cells[cells.WrapColumn(col - 1), row]; }