% cc.ps, art work.  Title: "Two Views"
% larger circle: colors are all combinations satisfying:
%   -  0,1, and 0.5 values in three color components,
%   -  at either 1 or 2 0.5 values
%   -  not 0 and 1 at the same time (i.e., not 1  0.5  0)
% smaller circle: colors are combinations of
%   0 or 1 values in three color components,
%   but not 3 0's (white) or 3 1's (black)
%
% Explanation:
%  Small upper image: all primary colors, simple,
%     not necessarily bad.
%  Large lower image: more complicated, interesting.
%    Outer circle: darker versions of colors in
%       outer circle of upper image.
%    Inner circle: lighter versions of colors in
%       inner circle of upper image.
%    Middle two circles: odd colors.
%  Patterns in lower image: 
%    "Bluish" colors alternate back and forth
%    Similarly for "redish" and "greenish" colors.
%
/r 200 def % size of larger circle

/path1 { % stack: rp; a third segment of a circle
  /rp exch def
  newpath
    0 0 moveto % everything centered at origin
    rp 120 cos mul rp 120 sin mul lineto
    0 0 rp 120 0 arcn
  closepath
} def % path1

/inch {72 mul} def
/back { % make background black
   newpath
      0 0 moveto
      8.5 inch 0 lineto
      8.5 inch 11.7 inch lineto
      8.5 inch neg 11.7 inch lineto
      closepath
      1 1 1 0  setcmykcolor % black
      fill
} def % back

/doit { % do larger circle
  % circle 1 (outer)
  r path1 % feed r in as size
  0.5 1 1 0 setcmykcolor
  fill
  120 rotate
  r path1
  1 1 0.5 0 setcmykcolor
  fill
  120 rotate
  r path1
  1 0.5 1 0 setcmykcolor
  fill
  120 rotate

  % circle 2
  180 rotate
  /s r .8 mul def
  s path1
  0.5 1 0.5 0 setcmykcolor
  fill
  120 rotate
  s path1
  1 0.5 0.5 0 setcmykcolor
  fill
  120 rotate
  s path1
  0.5 0.5 1 0 setcmykcolor
  fill
  120 rotate
  180 neg rotate

  % circle 3
  120 neg rotate
  /t r .6 mul def
  t path1
  0.5 0 0.5 0 setcmykcolor
  fill
  120 rotate
  t path1
  0 0.5 0.5 0 setcmykcolor
  fill
  120 rotate
  t path1
  0.5 0.5 0 0 setcmykcolor
  fill
  120 rotate
  120 rotate

  % circle 4 (inner)
  60 neg rotate
  /u r .4 mul def
  u path1
  0.5 0  0 0 setcmykcolor
  fill
  120 rotate
  u path1
  0  0 0.5 0 setcmykcolor
  fill
  120 rotate
  u path1
  0 0.5 0 0 setcmykcolor
  fill
  120 rotate
  60 rotate
} def % doit

/doit2 { % do smaller circle
  % circle 1 (outer)
  /s r 0.5 mul def
  s path1
  0 1 1 0 setcmykcolor
  fill
  120 rotate
  s path1
  1 1 0 0 setcmykcolor
  fill
  120 rotate
  s path1
  1 0 1 0 setcmykcolor
  fill
  120 rotate

  % circle 4 (inner)
  180 rotate
  /t r 0.3 mul def
  t path1
  0 1 0 0 setcmykcolor
  fill
  120 rotate
  t path1
  1 0 0 0 setcmykcolor
  fill
  120 rotate
  t path1
  0 0 1 0 setcmykcolor
  fill
  120 rotate
  180 neg rotate
} def % doit2

back % black background
300 300 translate
doit % larger circle in lower half

0 350 translate
doit2 % smaller circle in upper half

showpage