function [E,contour,G_somme] = recursion(E,contour,G_somme,i,j,voisins,G_x,G_y,card_max,cos_alpha) % Fonction recursive permettant de construire un ensemble candidat E contour(i,j) = 0; G_somme_normalise = G_somme/norm(G_somme); nb_voisins = size(voisins,1); k = 1; while k<=nb_voisins & size(E,1)<=card_max i_voisin = i + voisins(k, 1); j_voisin = j + voisins(k, 2); if contour(i_voisin,j_voisin) G_ij = [G_x(i_voisin, j_voisin), G_y(i_voisin, j_voisin)]; G_ij_normalise = G_ij/norm(G_ij); prod_scal = G_somme_normalise*G_ij_normalise'; if prod_scal >= cos_alpha E = [E; i_voisin j_voisin]; G_somme = [G_somme; G_ij_normalise]; recursion(E, contour, G_somme, i_voisin, j_voisin, voisins, G_x, G_y, card_max, cos_alpha); end end k = k+1; end end