home *** CD-ROM | disk | FTP | other *** search
- {draws true circles, not elipses, in HiRes. Modifiable for MedRes}
- procedure MichCircle(cx,cy,radius,color:integer);
- var x,y,d: integer;
-
- procedure EightPoints(x,y,ox,oy,c:integer);
- const aspect = 50; {50 for 640x200, 25 for 320x200}
- var ax,px,py,nx,ny: integer;
- begin
- ax := (aspect*abs(x)+11) div 22;
- px := ox + ax; py := oy + y;
- nx := ox - ax; ny := oy - y;
- plot(px,py,c);
- plot(px,ny,c);
- plot(nx,py,c);
- plot(nx,ny,c);
- ax := (aspect*abs(y)+11) div 22;
- px := ox + ax; py := oy + x;
- nx := ox - ax; ny := oy - x;
- plot(px,py,c);
- plot(px,ny,c);
- plot(nx,py,c);
- plot(nx,ny,c);
- end;
-
- begin {MichCircle}
- x:=0;
- y := radius;
- d := 3 - 2*radius;
- while x<y do begin
- EightPoints(x,y,cx,cy,color);
- if d<0 then
- d := d + 4*x + 6
- else begin
- d := d + 4*(x-y) + 10;
- y := y - 1
- end;
- x := x + 1
- end; { while }
- if x = y then
- EightPoints(x,y,cx,cy,color);
- end; {MichCircle}
-