uses Crt, Graph;
var Gd, Gm: Integer;
    i,j,k,u,v,cN: integer;
    y,r,c,s3,s820: real;
    p:pointer; s:word;
begin
 Gd := Detect;
 InitGraph(Gd, Gm, 'c:\bp\bgi');
 if GraphResult <> grOk then  Halt(1);
 for k:=0 to 15 do setpalette(k,k);
 setrgbpalette(15,12,12,12); bar(0,0,639,479);
 cN:=14;
 for k:=0 to cN do setrgbpalette(k,10 + k*53 div cN,
                                   10 + k*53 div cN,
                                   10 + k*53 div cN);
 s3:=sqrt(3); s820:=sqrt(8)*20;
 for v:=-20 to 20
 do for u:=-20 to 20
    do begin
       r:=sqr(v)+sqr(u);
       if r <= 412 then
       begin
       y:=sqrt(abs(400-r));
       c:=(-u+y*s3-v*2)/s820; if c < 0 then c:=0;
       i:=round(c*cN);
       putpixel(u+32,v+23,i);
       putpixel(3*u+120,3*v+230,i);
       putpixel(3*u+121,3*v+230,i);
       putpixel(3*u+122,3*v+230,i);
       putpixel(3*u+120,3*v+231,i);
       putpixel(3*u+121,3*v+231,i);
       putpixel(3*u+122,3*v+231,i);
       putpixel(3*u+120,3*v+232,i);
       putpixel(3*u+121,3*v+232,i);
       putpixel(3*u+122,3*v+232,i);
       putpixel(4*u+520,4*v+230,i);
       putpixel(4*u+521,4*v+230,i);
       putpixel(4*u+522,4*v+230,i);
       putpixel(4*u+520,4*v+231,i);
       putpixel(4*u+521,4*v+231,i);
       putpixel(4*u+522,4*v+231,i);
       putpixel(4*u+520,4*v+232,i);
       putpixel(4*u+521,4*v+232,i);
       putpixel(4*u+522,4*v+232,i);
       end
    end;
 readkey;
 s:=ImageSize(0,0,63,47);
 GetMem(p,s);
 getimage(0,0,63,47,p^);
 for i:=0 to 10 do
 for j:=0 to 10 do putimage(64*i, 48*j, p^, 0);
 FreeMem(p,s);
 ReadKey;
 CloseGraph;
end.


