30 lines
1,004 B
Mathematica
30 lines
1,004 B
Mathematica
|
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
|