% colorcirc.m Zeichnen  eines Farbkreises 
%   In jedem Bild variiert der Farbwinkel um 360 Grad.
%   In 9 Gruppen werden 9 verschiedne Saettigungen gezeigt,
%   und in jeder Gruppe 6 Helligkeits-Stufen. 
%   Weiterschalten mit <return> oder einer anderen Taste.
%   Gleichzeitig wird die Uebereinstimmung der selbst 
%   programmierten Prozedur rgbfromhsv
%   mit der Bibliotheksprozedur hsv2rgb getestet.
r1 = 3;
r2 = 5;
n = 24;
dwh=pi/n;
for ks = 1:9
  sat = 1-(ks-1)*0.125;
  for kb=1:6
    bri = 1-(kb-1)*0.2;
    clf
   axis equal
    mx = 0;
    for k=1:n
      w = (k-1)*2*dwh;
      x = [r1*cos(w-dwh) r1*cos(w+dwh) r2*cos(w+dwh) r2*cos(w-dwh) ];
      y = [r1*sin(w-dwh) r1*sin(w+dwh) r2*sin(w+dwh) r2*sin(w-dwh) ];
% selbst programmierte Umsetzung rgbfromhsv, verlangt hue in Grad
      [ra1,ga1,ba1] = rgbfromhsv(w*180/pi,sat,bri);
% Bibliotheksprozedur hsv2rgb verlant hue zwischen 0 und 1
      [ra,ga,ba] = hsv2rgb(w/2/pi,sat,bri);
      mx = max([mx,ra1-ra, ga1-ga, ba1-ba]);
      coldat = [ra ga ba];
      patch(x,y,coldat) ;
    end
    [mx sat bri] % output Resultatvergleich, Saettigung, Helligkeit
    pause
  end
end
