function cassini(varargin)
%uloha 56
% cassini - kresli Cassiniho krivku(y) pomoci symbolickeho toolboxu
% cassini(a,s1,s2,...,sn)
% a ... poloha ohnisek na ose 'x': F1=(-a,0), F2=(a,0)
% s1, s2, s3 atd. ... soucin vzdalenosti bodu krivky od ohnisek
%                  
% priklady volani:
% cassini(3,2,2.5,3.5,4) % nakresli 4 Cassiniho krivky
% cassini(3,1,2,3,4,5) % nakresli 5 Cassiniho krivek
% cassini(4) % nakresli Cassiniho krivku, kde s=a (Bernoulliho lemniskata)

if nargin<1
    error('Zadejte alespon jeden vstup!')
end
a = varargin{1}; % prvni vstup je vzdal. ohnisek
if a<=0
    error('Vstup(y) musi byt kladna cisla!')
end
% implicitni vyjadreni Cassiniho krivky
syms x y s
f = (x^2+y^2)^2-2*a^2*(x^2-y^2)-s^4+a^4;

% jeden vstup
if nargin==1 
       ezplot(subs(f,s,a)); % vykreslime jen jednu krivku, modrou
end
% zpracovani dalsich vstupu:
for i=2:nargin
    S = varargin{i};
    if S<=0
        error(sprintf('%d. vstup musi byt kladne cislo!',i))
    end
    if i>2
        hold on % zachovat prvni graf (a ty dalsi taky)
    end
    h = ezplot(subs(f,s,S)); % vykreslime 1 krivku
    barva = rand(1,3); % triprvkovy vektor barvy
    set(h, 'color', barva) % prebarveni cary grafu
end
hold off % uz prikreslovat nebudeme