%-------------------------------------------------------------------------
% Carlos Cabral   2003

% Metodo de Riemann para aproximar uma circunferencia a pontos no plano 2D
%-------------------------------------------------------------------------

function [coord_cir] = POINTS2CIRC_FIT_REIMANN(pontos)

% usando dados cartesianos
const=(1+pontos(1,:).^2+pontos(2,:).^2);
r(1,:)=pontos(1,:)./const;
r(2,:)=pontos(2,:)./const;
r(3,:)=(pontos(1,:).^2+pontos(2,:).^2)./const;

x_med=sum(r(1,:))/length(r(1,:));
y_med=sum(r(2,:))/length(r(2,:));
z_med=sum(r(3,:))/length(r(3,:));

r_med=[x_med 
       y_med
       z_med];
 
aa=cov(r');

[N,D]=eig(aa);

[s,t]=min(diag(D));
c=-N(:,t)'*r_med;
 

centro_x=-N(1,t)/(2*(c+N(3,t)));
centro_y=-N(2,t)/(2*(c+N(3,t)));
raio=sqrt((N(1,t)^2+N(2,t)^2-4*c*(c+N(3,t)))/(4*(c+N(3,t))^2));
coord_cir=[centro_x centro_y raio 0];
