%ZYKLODEMO  animierte grafische Demo zur Definition von Zykloiden
% Durch Vor-Definieren der globalen Variablen ZYKRAD
% (kleiner, = , groesser als 1, fuer gestreckte, normale, verschlungene)
% kann der Typ der Zykloiden gew{\"a}hlt werden (Defaultwert = 1). 
%   Copyright 2003 HSZ-T, Zuerich , Dr. Stefan Adam
t = 2*pi*(0:0.05:1.8) ;  w = 2*pi*(0:0.05:1);
clf ;  hold on
if  exist('ZYKRAD') == 0
  ZYKRAD = 1
end 
R=ZYKRAD ;  polx = 0 ;  poly = -R;
plot([0 4*pi], [-1 -1], 'k') ; axis([-0.3 12.3 -4 8.6]); axis square
Mofram=moviein(length(t));
for k=1:length(t)
  x=t(k) + cos(w) ;   y= sin(w);
  lx = 0:0.05*2*pi:t(k) ;  ly = -ones(1,length(lx));
  bx = t(k) - sin(lx) ;  by = -cos(lx);
  vx = [t(k) t(k)-R*sin(t(k))] ;  vy = [0  -R*cos(t(k))];
  pnewx =  t(k)-R*sin(t(k)) ;  pnewy =  -R*cos(t(k));
  if k > 1 
    delete(circ); delete(cent); delete(arc);
    delete(vec); delete(pt);
  end
  circ = plot(x,y,'k') ;  cent = plot(t(k),0,'k.');
  arc  = plot(bx,by,'g') ;  vec = plot(vx,vy,'b');
  pt = plot(pnewx,pnewy,'m.');  plot([polx pnewx],[poly pnewy],'r');
  polx = pnewx ;  poly = pnewy ;  plot(lx,ly,'g');
  Mofram(:,k)=getframe;   pause(0.1);
end 
pause(0.8);  movie(Mofram,-3);  movie(Mofram,1);
