function R = houghRectangulos( P , longLadoA, longLadoB, tolerRhos, tolerTitas)
%HOUGHRECTANGULOS Devuelve las cuatro rectas que forman un rectangulo  %
%   de lados longLadoA y LongLadoB de entre todas las que aparecen en P% 
%   P son los picos sacados de la tabla de acumulación de la transform %
%   de Hough. tolerRho es la diferencia que toleramos en ambas long    %
%   de los lados y tolerTitas en los angulos 90+-tolerTita, 180+-tolerTita
%                                                                      %
% RECIBE: picos P y longitudes de los lados del rectangulo a buscar    %
% DEVUELVE:  Matriz R de 4 x 2 con las 4 rectas que forman el rectang  %
%                 (rho1,tita1)                                         %
%                 (rho2,tita2)                                         %
%                 (rho3,tita3)                                         %
%                 (rho4,tita4)                                         %
% BUGS:                                                                %                                       
% SUPOSICIONES :  toleranciaTita 5 grados                              %
%                 toleranciaRho 25 pixeles                             %
% Ejemplo:
% >> H=hough(I);
% >> P=houghPicos(H,0.2);
% >> houghDibujaRectas(P,'r');
% >> R=houghRectangulos(P , 170, 275)
% >> houghDibujaRectas(R,'g');
%-------reservo para tabla de acumulacion-------------------------------    


R=zeros(4,2);
%Busca lado paralelo
numPicos=length(P);
for i=1:numPicos
    for j=1:numPicos
        for k=1:numPicos
            for m=1:numPicos 
                %tienen ser combinaciones de 4 rectas distintas
                if ((i==j)  || (i==k) || (i==m)|| (j==k) || (j==m) || (k==m) ) continue; end
                lado1Rho=P(i,1);
                lado1Tita=P(i,2);
                lado2Rho=P(j,1);
                lado2Tita=P(j,2);
                lado3Rho=P(k,1);
                lado3Tita=P(k,2);
                lado4Rho=P(m,1);
                lado4Tita=P(m,2);
                difTita12 = lado1Tita - lado2Tita;
                difTita13 = lado1Tita - lado3Tita;
                difTita24 = lado2Tita - lado4Tita;
                if( sign(lado1Rho) == sign(lado3Rho) ) 
                    difRho13=abs (abs(lado3Rho)+ abs(lado1Rho)); %pues cada recta pasa a un lado del origen
                else
                    difRho13=abs (abs(lado3Rho)-abs(lado1Rho));
                end
                
                 if( sign(lado2Rho) == sign(lado4Rho) )              
                     difRho24=abs (abs(lado2Rho)+ abs(lado4Rho)); %pues cada recta pasa a un lado del origen
                else
                    difRho24=abs (abs(lado2Rho)-abs(lado4Rho));
                end
                
                condicionTita12 = abs(mod(difTita12,180)-90) < tolerTitas; %si 1 y 2 forman 90º aprox
                condicionTita13 = (abs(abs(difTita13)-180) < tolerTitas);   %si 1 y 3 forman 180º aprox
                condicionTita24 =(abs(abs(difTita24)-180) < tolerTitas);   %si 2 y 4 forman 180º aprox
                condicionTitas = condicionTita12 && condicionTita13 && condicionTita24;
                condicionRho1 = (abs(difRho13 - longLadoA) < tolerRhos) && (abs(difRho24 - longLadoB) <tolerRhos);
                condicionRho2 = (abs(difRho13 - longLadoB) < tolerRhos) && (abs(difRho24 - longLadoA) <tolerRhos);
                condicionRhos = condicionRho1 || condicionRho2;

                if condicionTitas && condicionRhos
                    R(1,:)=P(i,:);
                    R(2,:)=P(j,:);
                    R(3,:)=P(k,:);
                    R(4,:)=P(m,:);
                    houghDibujaRectas(R,'g');%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
                    return; %termina porque ha encontrado las 4 rectas que forman el rectangulo
                end
                
            end
        end
    end
end
display('No encuentro rectangulo!!!!');
    
    



    
    

    
  