function [punti]=stato_arte_ricostruzione_vero(raggi,epsilon,dim_stanza_x,dim_stanza_y,dim_stanza_z,d_max_var)
%Raggi contiene tutte le rette

%epsilon è la distanza per cui un marker viene considerato punto vero
%dim stanza è la dimensione della stanza in [mm]


punti=[-1 -1 -1]; %inizializzo punti

%Ricostruisco i punti con 4 mediante minimi quadrati e quattro raggi        


for i=1:(length(raggi)-3)
    for j=i+1:(length(raggi)-2)
        for k=j+1:length((raggi)-1)
          %for t=k+1:length((raggi))
            R=[raggi(i,1:4) ; raggi(i,5:8); raggi(j,1:4) ; raggi(j,5:8) ; raggi(k,1:4) ;raggi(k,5:8)] ;% raggi(t,1:4) ; raggi(t,5:8)];
            [x y z]=min_quad_3D(R); %calcolo il punto di minima distanza tra le quattro rette
            dt1=distanza_punto_punto([x y z],raggi(i,9:11));
            dt2=distanza_punto_punto([x y z],raggi(j,9:11));
            dt3=distanza_punto_punto([x y z],raggi(k,9:11));
           if (x>0 && y>0 && z>0 && x<dim_stanza_x && y<dim_stanza_y && dt1<d_max_var && dt2<d_max_var && dt3<d_max_var)% && z<dim_stanza_z ) %controllo che il punto sia valido ovvero interno alla stanza
               d1=distanza_punto_retta([x y z], raggi(i,9:11),raggi(i,12:14));  %calcolo distanze punto retta
               d2=distanza_punto_retta([x y z], raggi(j,9:11),raggi(j,12:14));
               d3=distanza_punto_retta([x y z], raggi(k,9:11),raggi(k,12:14));
               %d4=distanza_punto_retta([x y z], raggi(t,9:11),raggi(t,12:14));
               d=max([d1 d2 d3]);% d4]); %considero distanza maggiore
               if d<epsilon %Il punto risulta valido e lo salvo
                   punti=[punti ; [x y z]]; 
               %end       
           end
        end
  end
end
end
