function anim(x, y, px, py)
% Ett litet animeringsprogram
%
% Anrop: anim(x, y, px, py)
%
% Indata:
%   x, y :   vektorer som skall innehålla koordinaterna för
%            den rörliga elektronen (ges av ode45).
%
%   px, py : vektorer som skall innehålla koordinaterna för
%            de fixa elektronerna.
%
% De förutsätts att alla koordinater ligger mellan -1 och 1.
% Observera att det skapas ett nytt plotfönster vid varje anrop.
% Om Din dator är (hårt) belastad kan animationen bli ryckig.
%
% Thomas Ericsson 2001-02-10.

if nargin ~= 4
  error('*** Du måste ge fyra inparametrar.')
end

if min(size(x)) > 1 | min(size(y)) > 1 | min(size(px)) > 1 | min(size(py)) > 1
  error('*** Du måste ge vektorer, inte matriser.')
end

if length(x) ~= length(y) 
  error('*** x och y har inte samma längd.')
end

if length(px) ~= length(py) 
  error('*** px och py har inte samma längd.')
end

h  = figure;
set(h, 'Units', 'centimeters', 'Position', [2 2 20 21], ...
       'Menubar', 'none', 'NumberTitle', 'Off',         ...
       'DoubleBuffer', 'On', 'Name', 'Movie time', 'Color', [1 1 1])

h1 = plot(x(1), y(1), 'ro');
set(h1, 'Markersize', 5, 'Linewidth', 5) %, 'EraseMode', 'xor')
hold on

h2 = plot(px, py, 'bo');
set(h2, 'Markersize', 10, 'Linewidth', 10)

axis([-1 1 -1 1])
axis square
axis('off')

for k = 2:length(x)
  set(h1, 'XData', x(k), 'YData', y(k))
  drawnow
end

uicontrol(h, 'Style', 'Pushbutton',          ...
             'Position', [20 20 60 60],      ...
             'BackgroundColor', [1 0.1 0.1], ...
             'ForegroundColor', [0 0 0],     ...
             'String', 'Stäng',              ...
             'Fontweight', 'Bold',           ...
             'Fontsize', 12,                 ...
             'Callback', 'delete(gcf)');
