	Have you ever heard of Bresenham's alogorithms for lines and circles?
I believe that the latter can be modified to handle ellipses.  I have not
done it myself, but have seen these algorithms used on HP Chipmunks, and
they are blindingly fast.  The guy that wrote them for this machine also
did a fast ellipse routine.
	To (hopefully) help, I will type in J. Michener's adaptation of
Bresenham's circle algorithm (for circles).  I am taking this directly
from page 445 of "Fundamentals of Interactive Computer Graphics" by
J.D.Foley and A.Van Dam, Copyright 1982, Reprinted July, 1984.
	It is, by the way, written in Pascal...

procedure MICH_CIRCLE(radius, value: integer);
  {assumes center of circle is at origin}
  var x, y, d: integer;
begin
  x := 0;
  y := radius;
  d = 3 - 2*radius;
  while x<y do begin
    CIRCLE_POINTS(x,y,value);
    if d<0
      then d := d + 4*x + 6;	{Select S}
      else begin		{Select T -- decrement y}
	d := d + 4*(x-y) + 10;
	y := y - 1
      end
    x := x + 1
  end	{while}
  if x=y then CIRCLE_POINTS(x,y,value);
end	{MICH_CIRCLE}

{ I (Glenn Lewis) just noticed that I have to give you CIRCLE_POINTS as well }

procedure CIRCLE_POINTS(x, y, value: integer);
begin
  WRITE_PIXEL( x, y, value);
  WRITE_PIXEL( y, x, value);
  WRITE_PIXEL( y,-x, value);
  WRITE_PIXEL( x,-y, value);
  WRITE_PIXEL(-x,-y, value);
  WRITE_PIXEL(-y,-x, value);
  WRITE_PIXEL(-y, x, value);
  WRITE_PIXEL(-x, y, value);
end	{CIRCLE_POINTS}

{************************************************************}

	I hope this helps to make your own fast ellipse.  If not, I'm sorry.

						-- Glenn Lewis

