%-----------------------------------------------------------
% Carlos Cabral 2003 - Dep.UA

% Desenvolvimento da equação da largura estimada LE em função do Dmin e do ângulo de abertura entre os dois extremos do elemento
% E
% Teste efectivo de largura
%----------------------------------------------------------

function [L_Le]=TEST_Le_L(data, cart_data, feature_pontos, i5, raio_circ, angbwfeixes)

    Dmin(i5)=min(data(feature_pontos(i5,1):feature_pontos(i5,2))); % encontrar o ponto que tem a distancia minima em cada feature
    
    ang=(feature_pontos(i5,3)-2)*angbwfeixes; % calcular o angulo entre os dois penultimos feixes (pontos) das extremidades da feature (por isso e que é feature_pontos(i5,3)-2) x o angulo entre feixes da o angulo total
    m=tan((-ang/2+90)*pi/180); % pi/180 conversao para rad
    b=-(Dmin(i5)+raio_circ);

    % calculo do valor de x (largura estimada Le=2*x) para a intersepçao da recta com a circunferencia
    equa_quadratica(:,1)=1+m^2;
    equa_quadratica(:,2)=2*m*b';
    equa_quadratica(:,3)=b'^2-raio_circ^2;

    raizes=roots(equa_quadratica);
    if isreal(raizes) % testar se tem soluçao a intercepçao entre a recta e a circunferencia
        % Calculo de L estimado em funçao de (r,Dmin,ang)
        Le=2*min(raizes);
        % Calculo de L real em funçao das coordenadas dos extremos (calculo da distancia euclidiana)
        L=sqrt( ( cart_data(feature_pontos(i5,2)-1,1)-cart_data(feature_pontos(i5,1)+1,1) )^2 + ( cart_data(feature_pontos(i5,2)-1,2)-cart_data(feature_pontos(i5,1)+1,2) )^2 );
          
            %--------------------------
            %teste efectivo de largura
            ang_abertura_ideal=2*asin(raio_circ/(raio_circ+Dmin(i5)))*180/pi;
            ang_abertura_real=feature_pontos(i5,3)*angbwfeixes;
          
            if and(ang_abertura_real < ang_abertura_ideal+1 , ang_abertura_real > ang_abertura_ideal-1) % o angulo de abertura real deve estar compreendido enter +-1º do angulo ideal
                L_Le=L/Le;
            else
                L_Le=NaN;
            end
            %--------------------------  
      
    else
        L_Le=NaN;
    end