[Ajuda] Código para fazer círculos no Processing - Java

Meu professor passou um trabalho para fazermos um programa no processing como se fosse um autocad,nele temos que fazer círculos,quadrados,retas elipses etc,eu achei o algoritmo para fazer elipses mas não estou conseguindo achar nem fazer o algoritmo de círculos,alguém pode me ajudar por favor.

Segue o algoritmo da elipse.

void fazEllipse(int x0, int y0, int x1, int y1) {
  int a = abs(x1-x0), b = abs(y1-y0), b1 = b&1; /* values of diameter */
  long dx = 4*(1-a)*b*b, dy = 4*(b1+1)*a*a; /* error increment */
  long err = dx+dy+b1*a*a, e2; /* error of 1.step */

  if (x0 > x1) { 
    x0 = x1; 
    x1 += a;
  } /* if called with swapped points */
  if (y0 > y1) y0 = y1; /* .. exchange them */
  y0 += (b+1)/2; 
  y1 = y0-b1;   /* starting pixel */
  a *= 8*a; 
  b1 = 8*b*b;

  do {
    set(x1, y0, color(255)); /*   I. Quadrant */
    set(x0, y0, color(255)); /*  II. Quadrant */
    set(x0, y1, color(255)); /* III. Quadrant */
    set(x1, y1, color(255)); /*  IV. Quadrant */
    e2 = 2*err;
    if (e2 <= dy) { 
      y0++; 
      y1--; 
      err += dy += a;
    }  /* y step */

    if (e2 >= dx || 2*err > dy) { 
      x0++; 
      x1--; 
      err += dx += b1;
    } /* x step */
  } 
  while (x0 <= x1);

  while (y0-y1 < b) {  /* too early stop of flat ellipses a=1 */
    set(x0-1, y0, color(255)); /* -> finish tip of ellipse */
    set(x1+1, y0++, color(255)); 
    set(x0-1, y1, color(255));
    set(x1+1, y1--, color(255));
  }
}

Pergunta: por que você precisa de métodos diferentes para o círculo e a elipse, se o circulo é um caso especial de elipse? Ou seja, para desenhar um círculo, basta que os raios da elipse sejam iguais, não?

Abraço.

Eu preciso de um método especifico,pois os dados de entrada vai ser a leitura do mouse.então nem sempre o valor de x e y vão o ser mesmo

Quais são os parâmetros dessa função de elipse? Um é a posição a ser desenhada e o outro são os dois raios?

Independente disso, não vejo como a posição do mouse influencia o algoritmo. Só muda o local a ser desenhado, mas a forma a ser desenhada não depende disso, mas sim dos raios.

Dica: dê nomes mais específicos às suas variáveis. x0, y0, x1 e y1 são difíceis de deduzir.

Abraço.

Obrigado,Consegui aqui.