function tournesol(nb,tp,val,f)
%TOURNESOL(NB,TP,VAL,F) représente le coeur d'un tournesol

% NB = nombre de points; TP= taille du point; VAL=1 -> affiche le No du point
% VAL=0 -> n'affiche pas le No du point. Défaut: TP=12, VAL=0.
% F est un couple (ou plus) de nombres de Fibonacci. Par défaut:
% F(1)=13 et F(2)=21.

% Initialisation des paramètres
if nargin==1
	tp=12;
	val=0;
	f=[];
elseif nargin==2
	val=0;
	f=[];
elseif nargin==3
	f=[];
end

% Données
err=0;						% Erreur sur l'angle
n=1:nb;						% Nombre de points
nbdor=(1+sqrt(5))/2;		% Nombre d'or
alpha=2*pi/(nbdor+1)+err;	% alpha=2*pi/(nbdor^2)=2*pi/(nbdor+1)=2*pi-2*pi/nbdor=137.5078°

% Courbes en coordonnées polaires
r=sqrt(n);					% rayon
t=alpha.*n;					% angle polaire

x=r.*cos(t);				% conversion polaire->cartésien
y=r.*sin(t);

% représentation graphique

% tracé des spirales
coul='wybgmcr';				% palette des couleurs
for i=1:length(f)
	for j=1:f(i)
		k=j:f(i):nb;
		plot(x(k),y(k),coul(rem(i,7)+1))
		hold on
	end
end

% représentation des points
plot(x,y,'.','markersize',tp)

% affichage du numéro du point
if val
	for i=1:nb
		text(x(i)+0.1,y(i)+0.1,int2str(i))
	end
end

axis equal
axis off
hold off
