function markdom ( z, dir, xmin, xmax, ymin, ymax, dyplot, inout );
% MarkDom
%
% This m-file is part of the material of the lecture
%   Scientific Computing and Software Tools
% at the Math Department of Halle University, Germany.
% Summer term 2004
%
% Author :      Prof. Dr. M. Arnold, arnold@mathematik.uni-halle.de
% Version of :  May 11, 2004
%
% Hilfsprogramm fuer StabDom (Schattierung)    
%                            
% Parameter:
%  z                  : Wurzelortskurve   
%  dir                : Drehrichtung der Kurve
%                       = 1  : mathematisch positiv
%                       = -1 : mathematisch negativ
%  xmin, xmax         : untere/obere Grenze Realteil
%  ymin, ymax, dyplot : untere/obere Grenze Imaginaerteil, Dekrement  
%  inout              : Schraffur innen/aussen 
%                       = 0 : innen
%                       = 1 : aussen

plot ( z, '-r', 'LineWidth', 2 );     
hold on;
yplot=ymin; 
zmax=1;
while imag(z(zmax+1))>imag(z(zmax)),
  zmax=zmax+1;
end;
zmin=zmax;
while imag(z(zmin+1))<imag(z(zmin)),
  zmin=zmin+1;
end;
zzmin=imag(z(zmin));
zzmax=imag(z(zmax));
while yplot<zzmin,
  if inout==1,
    plot([xmin xmax], [yplot yplot],':r');
  end;
  yplot=yplot+dyplot;
end; 
zminl=zmin;
zminr=zmin;  
zl=real(z(zminl));
zr=real(z(zminr));                         
while yplot<zzmax,
  if dir==1,
    while imag(z(zminr))<yplot,
      zr=real(z(zminr));                         
      zminr=zminr+1;
      if zminr>length(z),
        zminr=1;
      end;
    end;
    while imag(z(zminl))<yplot,
      zl=real(z(zminl));
      zminl=zminl-1;
    end;  
  elseif dir==-1,
    while imag(z(zminr))<yplot,
      zr=real(z(zminr));                         
      zminr=zminr-1;
    end;
    while imag(z(zminl))<yplot,
      zl=real(z(zminl));
      zminl=zminl+1;
      if zminl>length(z),
        zminl=1;
      end;
    end;  
  end;
  if ((inout==0) & (real(z(zminr))<zr)) | ((inout==1) & (real(z(zminr))>zr)),
    zr=real(z(zminr));
  end;
  if ((inout==0) & (real(z(zminl))>zl)) | ((inout==1) & (real(z(zminl))<zl)) ,
    zl=real(z(zminl));
  end;
  if inout==0,
    plot([zl zr], [yplot yplot],':r');  
  elseif inout==1,
    plot([xmin zl], [yplot yplot],':r');  
    plot([xmax zr], [yplot yplot],':r'); 
  end;
  yplot=yplot+dyplot;
end;
while yplot<=ymax,
  if inout==1,
    plot([xmin xmax], [yplot yplot],':r');
  end;
  yplot=yplot+dyplot;
end;   
