function pizza(n)
%PIZZA(N) représente un cercle avec N points reliés par des cordes.
% La fonction calcule également les points d'intersection et les affiche.
% Il suffit de cliquer sur le bord du cercle N points. Le nombre de points
% d'intersection apparaît dans le titre.

% jbr, 25-2-97.

% affichage du cercle
rayon=1;
t=0:pi/400:2*pi;
X=rayon*cos(t);
Y=rayon*sin(t);
plot(X,Y,'b')
axis equal
axis off
hold on
title(['Cliquez les ',int2str(n),' points sur le cercle'])

% saisie des points
[x,y]=ginput(n);

% attraction des points sur le cercle (effet de glue) et tri.
a=sort(atan2(y,x));
x=cos(a);
y=sin(a);
plot(x,y,'or')

% représentation des cordes
for i=1:n-1
	for j=i+1:n
		plot([x(i) x(j)],[y(i) y(j)],'g')
	end
end

% calcul et représentation des points d'intersection
nb=0;	% nbre de points d'intersection
for i=2:n-2
	for j=i+2:n
		for k=1:i-1
			for m=i+1:j-1
				nb=nb+1;	% incrémenter le compteur
				a1=(y(j)-y(i))/(x(j)-x(i));
				b1=y(i)-a1*x(i);
				a2=(y(m)-y(k))/(x(m)-x(k));
				b2=y(k)-a2*x(k);
				xi=(b1-b2)/(a2-a1);
				yi=a1*xi+b1;
				plot(xi,yi,'or')
			end
		end
	end
end

title(['Nombre de points d''intersection: ',num2str(nb),...
       ', nombre de points sur le cercle: ',num2str(n)])
hold off
