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

% COEFICIENTE DE CORRELAÇAO usando a linearizaçao no plano complexo
%----------------------------------------------------------

function [coefcorr]=COEFCORR_CIRCLINEAR(c, pontos)

% (1)start ---- define ---- 
teta=-45*pi/180; % angulo que se vai rodar todos os pontos logaritmizados para o calculo do coeficiente de correlaçao (pois se nao se roda-se poderia dar problemas pq esta mt proximo da vertical)
% (1)end ------------------

	% translaçao dos pontos de modo a que o centro da circunferencia obtida pelo metodo de reimann coincida com a origem do sistema de coordenadas 
	trans=[1 0 -c(1)
           0 1 -c(2)
           0 0    1];
       
	pontos(3,:)=ones(1,length(pontos(1,:))); % acrescentar uma linha com valores unitarios para ser possivel a manipulaçao das matrizes (multiplicaçao, etc..., ou seja a translaçao dos pontos)   
	pontos_trans=trans*pontos; % operaçao de translaçao dos pontos
                    
	pontos_cplx=complex(pontos_trans(1,:),pontos_trans(2,:)); %transformaçao dos pontos em numeros complexos (mudança para o espaço complexo)
	pontos_cplx_log=log(pontos_cplx); %logaritmizaçao dos mesmos pontos
	
	%ciclo para rotaçao de todos os pontos para que seja possivel o calculo do coeficiente de correlaçao
	pontos_log_rot=[real(pontos_cplx_log);imag(pontos_cplx_log)]; % separaçao dos numeros imaginarios e colocaçao da parte real e imaginaria em linha separadas
	pontos_log_rot(3,:)=ones(1,length(pontos_log_rot)); % Acrescentar linha para a operaçao de rotaçao
	
    % matriz de rotaçao
	rot=[cos(teta) -sin(teta) 0
         sin(teta) cos(teta)  0
         0          0           1]; 
	pontos_rot=rot*pontos_log_rot; % rotaçao efectiva do pontos
	pontos_rot(3,:)=[]; % eliminaçao da linha que nao interessa
                    
	coef_ideal=corrcoef(pontos_rot'); % funçao para calcular o coeficiente de correlaçao
	coefcorr=coef_ideal(1,2);
                