2014-10-30 4 views
0

Я довольно смущен относительно того, как заполняются заливки или заливки границ. В частности, когда в игре играют несколько цветов.Разница между заполнением границ и заполнением флуда

Предположим, у нас есть многоугольник с зеленой рамкой и клетчатый интерьер (черный и белый). Какой алгоритм правильно заполнил бы область зеленым цветом и почему?

Определение Заливка из книги:

Иногда мы хотим, чтобы заполнить (или перекрасить) область, которая не определена в пределах одной границы цвета. Мы можем причинить боль таким областям, заменив указанный внутренний цвет, вместо того, чтобы искать определенный цвет границы. Эта процедура заполнения называется алгоритмом заполнения заливки.

+0

http://www.differencebetween.com/difference-between-boundary-fill-and-vs-flood-fill/ – Henrik

+0

Из-за путаницы в именах (совсем не разрешенных статьей, указанной Хенриком) дайте описание этих двух алгоритмов, чтобы мы могли дать разумный ответ. (IMO, наводнение и заливка границ - идеальные синонимы, и существует очень различная техника для заполнения многоугольников.) –

+0

@YvesDaoust Я хотел бы дать описание, но книга также довольно расплывчата по этому поводу. Поэтому я спрашиваю – Ortixx

ответ

0

На самом деле, вы не должны видеть несколько цветов в задаче заполнения, а скорее две категории: цвет «по-границам» или набор цветов и «не-граница» («внутри ") цвет или набор цветов. Это простая дихотомия, как будто изображение было двоичным.

В случае, о котором вы упоминаете, граница зеленая, а внутри - черно-белое (вы также можете рассмотреть не-зеленый).

+0

Итак, какой алгоритм я использовал бы и почему? – Ortixx

+0

Наполнение наполнителя или заполнение границы, так как они одинаковы. –

1

Вы должны использовать алгоритм заполнения границ. If Keeps Раскрашивание области внутрь наружу до тех пор, пока не встретится выбранный граничный цвет. в вашем случае, цвет границы будет зеленым. Таким образом, algo начнется с любой внутренней точки и продолжит пиксель за пикселем до тех пор, пока не встретится зеленый (граница). Черное или белое не имеет значения.

1

Наводнение заполняется в любой точке внутри полигона, а затем распространяется во всех направлениях, заполняя пиксели. Граничное заполнение находит первую границу, а затем прослеживает границу, нависающую в глубину. Граничная заливка обычно сложнее, но она является линейным алгоритмом и не требует рекурсии, тогда как заливка заливки может использовать непредсказуемый объем памяти для завершения, потому что неизвестно, сколько суб-заливок будет порождено.

Смежные вопросы