% 
%  Beispielaufruf: spirale( 1 )
%
function  spirale( freq )
   w2 = (2*pi*freq)^2;    % globale Variable: Winkelgeschwindigkeit ^2  
   
   x0 =  2;   % x0 : x-Anfangsort 
   y0 =  0;   % y0 : y-Anfangsort
   z0 =  0;   % z0 : z-Anfangsort 
   vx =  0;   % x-Anfangsgeschwindigkeit  
   vy = 10;   % y-Anfangsgeschwindigkeit
   vz =  1;   % z-Anfangsgeschwindigkeit  
   v0 = [x0, vx, y0, vy, z0, vz];   % Anfangswerte
   tm = 4;    % 4 Sekunden lang
   tspan = [0,tm];             % Zeit-Intervall
   
   % Lösung des Anfangswert-Problems
   sol = ode45( @Fun_Spirale, tspan, v0, [], w2 );
   
   nframes = 70;           % Zahl der Frames = Einzelbilder
   t = linspace( 0, tm, nframes );   
   % x - 1. Komponente
   x = deval( t, sol, 1 );
   y = deval( t, sol, 3 );
   z = deval( t, sol, 5 );
  
   % f = figure;
   plot3( x, y, z );  grid on;     % alles plotten
   xlabel( 'x' ); ylabel( 'y' );
      
   % Movie erstellen 
   
   % Startplot mit rotem Punkt erstellen und handle h merken
   hold on
   h = plot3( x0, y0, z0, '.r' );
   set( h, 'MarkerSize', 30 );  % Punktgröße auf 30 setzen
   axis( [min(x) max(x)  min(y) max(y)  min(z) max(z)] )
   axis equal

   for( k = 1:nframes )        % alle 70 Einzel-Frames erzeugen
      % Plot mit neuen Daten erstellen
      set( h, 'XData', x(k), 'YData', y(k), 'ZData', z(k) )
      % aus Plot ein Frame für Movie schießen
      M(k) = getframe(gcf);
   end
   hold off
  
   % movie2avi( M, 'Spirale.avi', 'compression', 'None');
%    v = VideoWriter( 'Spirale.avi' );
%    open(v);
%    writeVideo(v,M);
%    close(v);   
   
   clf;
   nochmal = 'Ja';
   while( strcmp( nochmal, 'Ja' ) == 1 )
      movie( gcf, M, 5 )  % Movie 5x abspielen, default 12 Frames pro Sekunde 
      nochmal = questdlg( 'Nochmal', '', 'Ja', 'Nein', 'Ja' );
   end
   
   
