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

4 respostas Resolvido
java
P

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

4 Respostas

T

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.

P

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

T
Solucao aceita

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.

P

Obrigado,Consegui aqui.

Criado 6 de junho de 2017
Ultima resposta 9 de jun. de 2017
Respostas 4
Participantes 2