@Override
    public void addObstacles(Random rnd, boolean[][] map, WeightedPoint start, WeightedPoint goal)
    {
        int r, c, w, h;
        final int ovalCount = Math.max(1, (map.length * map[0].length) / 100);
        for (int i = 0; i < ovalCount; i++)
        {
            // Generate these values whether they're used or not to keep the seed consistent 
            // for the start and goals whether there are obstacles or not 
            r = rnd.nextInt(Math.max(1, map.length));
            c = rnd.nextInt(Math.max(1, map[0].length));
            w = 2 + rnd.nextInt(15);
            h = 2 + rnd.nextInt(15);

            if (w < 4)
                w = 4;
            if (h < 4)
                h = 4;

            // Ensure that this block does not cover the start or goal points
            boolean coveringStart = isCoveringPoint(start.getRow(), start.getCol(), r, c, w, h);
            boolean coveringGoal = isCoveringPoint(goal.getRow(), goal.getCol(), r, c, w, h);
            if (!coveringStart && !coveringGoal)
            {
                insertEllipse(map, r, c, w, h);
            }
        }

    }