% funzione ricorsiva alg_ricorsivo, necessaria per il calcolo dei centri in
% un piano immagine nel caso tridimensionale

function [matrice] = alg_ricorsivo(i, j, matrice_piano, matrice, n)
%% aggiornamento valori
% poniamo a 1 la posizione i,j per indicare che in quella posizione, nella
% matrice in ingresso matrice_piano vi è un uno e per indicare che quel
% vicino è stato visitato
matrice(i,j) = 1;

%% algoritmo ricorsivo
% mediante le chiamate ricorsive l'algoritmo visita tutti i vicini alla
% posizione i,j in ingresso

if j-1>=1 && matrice_piano(i, j-1) == 1 && matrice(i, j-1) ==0
    [matrice] = alg_ricorsivo(i, j-1, matrice_piano, matrice, n);
end
if i+1<=n && j-1>=1 && matrice_piano(i+1, j-1) == 1 && matrice(i+1, j-1) ==0
    [matrice] = alg_ricorsivo(i+1, j-1, matrice_piano, matrice, n);
end
if i+1<=n && matrice_piano(i+1, j) == 1 && matrice(i+1, j) ==0
    [matrice] = alg_ricorsivo(i+1, j, matrice_piano, matrice, n);
end
if i+1<=n && j+1<=n && matrice_piano(i+1, j+1) == 1 && matrice(i+1, j+1) ==0
    [matrice] = alg_ricorsivo(i+1, j+1, matrice_piano, matrice, n);
end
if j+1<=n && matrice_piano(i, j+1) == 1 && matrice(i, j+1) ==0
    [matrice] = alg_ricorsivo(i, j+1, matrice_piano, matrice, n);
end
if j+1<=n && i-1>=1 && matrice_piano(i-1, j+1) == 1 && matrice(i-1, j+1) ==0
    [matrice ] = alg_ricorsivo(i-1, j+1, matrice_piano, matrice, n);
end
if i-1>=1 && matrice_piano(i-1, j) == 1 && matrice(i-1, j) ==0
    [matrice] = alg_ricorsivo(i-1, j, matrice_piano, matrice, n);
end
