Ejemplo n.º 1
0
        static void dilate(DenseGrid2i grid, DenseGrid2i tmp, bool corners = true)
        {
            if (tmp == null)
            {
                tmp = new DenseGrid2i(grid.ni, grid.nj, 0);
            }

            int ni = grid.ni, nj = grid.nj;

            for (int i = 1; i < ni - 1; i++)
            {
                for (int j = 1; j < nj - 1; j++)
                {
                    if (grid[i, j] == 1)
                    {
                        tmp[i, j]     = 1;
                        tmp[i - 1, j] = 1;
                        tmp[i, j + 1] = 1;
                        tmp[i + 1, j] = 1;
                        tmp[i, j - 1] = 1;
                        if (corners)
                        {
                            tmp[i - 1, j + 1] = 1;
                            tmp[i + 1, j + 1] = 1;
                            tmp[i + 1, j - 1] = 1;
                            tmp[i - 1, j - 1] = 1;
                        }
                    }
                }
            }
            grid.copy(tmp);
        }
Ejemplo n.º 2
0
        static void dilate_loners(DenseGrid2i grid, DenseGrid2i tmp, int mode)
        {
            if (tmp == null)
            {
                tmp = new DenseGrid2i(grid.ni, grid.nj, 0);
            }

            int ni = grid.ni, nj = grid.nj;

            for (int i = 1; i < ni - 1; i++)
            {
                for (int j = 1; j < nj - 1; j++)
                {
                    if (grid[i, j] == 1)
                    {
                        tmp[i, j] = 1;

                        int nbrs =
                            grid[i - 1, j] + grid[i - 1, j + 1]
                            + grid[i, j + 1] + grid[i + 1, j + 1]
                            + grid[i + 1, j] + grid[i + 1, j - 1]
                            + grid[i, j - 1] + grid[i - 1, j - 1];

                        if (nbrs == 0)
                        {
                            if (mode != 3)
                            {
                                tmp[i - 1, j] = 1;
                                tmp[i + 1, j] = 1;
                                tmp[i, j + 1] = 1;
                                tmp[i, j - 1] = 1;
                            }
                            if (mode == 2 || mode == 3)
                            {
                                tmp[i - 1, j + 1] = 1;
                                tmp[i + 1, j + 1] = 1;
                                tmp[i + 1, j - 1] = 1;
                                tmp[i - 1, j - 1] = 1;
                            }
                        }
                    }
                }
            }
            grid.copy(tmp);
        }