{ >> I was wondering if anyone could show me the equations (and perhaps a >> demo in standard pascal) of the following shapes. What I need to know is >> where to plot the point. >> Circle. (I've tried using the equation taught to me at school, but it >> Line (What I would like would be to be able to plot a line by giving it There seems yet again to be enough interest/need so I'll post this stuff just ONCE more.... somebody put this in SWAG or something.... PLEASE!!! [Okay Sean, here you go! -Kerry] You need a plot(x,y) procedure and a global color variable to use these as posted. } {bresenham's line} procedure line(x, y, x2, y2 : integer); var d, dx, dy, ai, bi, xi, yi : integer; begin if (x < x2) then begin xi := 1; dx := x2 - x; end else begin xi := - 1; dx := x - x2; end; if (y < y2) then begin yi := 1; dy := y2 - y; end else begin yi := - 1; dy := y - y2; end; plot(x, y); if dx > dy then begin ai := (dy - dx) * 2; bi := dy * 2; d := bi - dx; repeat if (d >= 0) then begin inc(y, yi); inc(d, ai); end else inc(d, bi); inc(x, xi); plot(x, y); until (x = x2); end else begin ai := (dx - dy) * 2; bi := dx * 2; d := bi - dy; repeat if (d >= 0) then begin inc(x, xi); inc(d, ai); end else inc(d, bi); inc(y, yi); plot(x, y); until (y = y2); end; end; {filled ellipse} procedure disk(xc, yc, a, b : integer); var x, y : integer; aa, aa2, bb, bb2, d, dx, dy : longint; begin x := 0; y := b; aa := longint(a) * a; aa2 := 2 * aa; bb := longint(b) * b; bb2 := 2 * bb; d := bb - aa * b + aa div 4; dx := 0; dy := aa2 * b; vLin(xc, yc - y, yc + y); while (dx < dy) do begin if (d > 0) then begin dec(y); dec(dy, aa2); dec(d, dy); end; inc(x); inc(dx, bb2); inc(d, bb + dx); vLin(xc - x, yc - y, yc + y); vLin(xc + x, yc - y, yc + y); end; inc(d, (3 * (aa - bb) div 2 - (dx + dy)) div 2); while (y >= 0) do begin if (d < 0) then begin inc(x); inc(dx, bb2); inc(d, bb + dx); vLin(xc - x, yc - y, yc + y); vLin(xc + x, yc - y, yc + y); end; dec(y); dec(dy, aa2); inc(d, aa - dy); end; end;