Bonjour a tous,
J'ai fait un programme matlab qui permet de faire le graphe de gabriel sur des figures rentrées par un nuages de points ou par des coordonnées. J'aurais voulu savoir si ce programme vous parraissait juste et si c'est le cas si on ne peut pas l'ameliorer.
Merci par avance pour votre aide.
Je mets juste la fonction, si vous avez besoin du programme en entier demandez le, je vous le donnerais :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 
function GG=GrapheGabriel(x,y,Triang)
 
NbTr=size(Triang,1);
MC=[];
for l=1:NbTr
    Tr=Triang(l,: );
    i=Tr(1,1);j=Tr(1,2);k=Tr(1,3);
    MC=[MC;[i,j];[j,k];[k,i] ];   
end;
SML=sort(MC,2); % 
SML=sortrows(SML);
N=MC(1,: );
n=size(MC,1);
for i=2:n 
    if MC(i-1,: )==MC(i,: ) ;
    else N=[N;MC(i,: )]; end;
end;  
 
GG=[];
n=size(MC,1);
for k=1:n
    Cote=MC(k,: );i=Cote(1);j=Cote(2);
    n=numel(x);
    A=[x(i) y(i)]; B=[x(j) y(j)]; 
    M=1/2*(A+B);
    R=(1/2)*norm(B-A);
    Go=1;k=0;Bool=0;
    while Go
        k=k+1;
        if ismember(k,[i j]); 
        else
          C=[x(k) y(k)];d=norm(C-M);Bool=d<R; 
        end;    
        Go=not(Bool) & (k<n);
    end;    
    if not(Bool) GG=[GG;Cote];end;
end;  
clf;
plot(x,y,'.r');
 
n=size(GG,1);
for k=1:n
    i=GG(k,1);j=GG(k,2);
    plot([x(i) x(j)],[y(i) y(j)],'-b');hold on;
end;