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));
}
}