Preenchimento por inundação, também chamado de Flood fill ou seed fill, é um algoritmo de inundação que determina e altera a área conectada a um determinado nó em uma matriz multidimensional com algum atributo correspondente. No trabalho optamos por usar arrays para implementar o Flood fill pode ser mais simples e eficiente em termos de acesso direto aos elementos. Sendo útil quando você está trabalhando com uma estrutura de dados bidimensional(grid), onde os elementos estão organizados em linhas e colunas.
Pilha no Flood Fill:
• Adiciona a última coordenada para explorar primeiro.
• Flood fill em profundidade.
Fila no Flood Fill:
• Adiciona a primeira coordenada para explorar primeiro.
• Flood fill em largura.
Diferenças:
• Pilha: Explora uma direção completa antes de mudar.
• Fila: Explora todas as direções antes de avançar.
Main.java: tem como função de iniciar a execução do programa e coordenar a interação com o usuário, permitindo a escolha de padrões e parâmetros para o algoritmo de Flood Fill.
PATH STRUCTURES:
Coordinate.java: é usada para armazenar as posições de linha e coluna em um formato fácil de acessar e usar.
GenericList.java: é uma interface que define métodos para adicionar, remover e verificar elementos em uma estrutura de dados genérica que armazena coordenadas.
Queue.java (fila):
implementa uma fila que armazena coordenadas (linha e coluna), permitindo a adição (enqueue) e remoção (dequeue) de elementos seguindo o conceito FIFO (primeiro a entrar, primeiro a sair).
Stack.java (pilha):
A classe Stack implementa uma pilha que armazena coordenadas, permitindo a adição (push) e remoção (pop) de elementos seguindo a política LIFO (último a entrar, primeiro a sair).
PATH FILL:
Color.java: Definição das cores que irão aparecer na matrix.
FloodFill.java: altera valores de pixel a partir de uma posição inicial e propagando essas alterações usando uma estrutura de dados (pilha ou fila) para rastrear e processar os elementos.
Matrix.java: Definição da imagem escolhida, tendo como padrão outra caso a opção digitada for inexistente.
Resultado 1:
Resultado 2:
Resultado 3:
Resultado 4: