2009-06-20 35 views
8

Estoy haciendo un juego donde todos los movimientos se basan en la cuadrícula. También quiero hacer entidades que puedan moverse en círculo. Entonces, ¿alguien tiene alguna sugerencia para crear un círculo a partir de una cuadrícula de cuadrados (como la forma en que MS Paint usa la herramienta círculo para hacer un círculo de píxeles cuadrados).Cómo hacer un círculo en una cuadrícula?

Respuesta

3

Aquí está mi implementación de Java del algoritmo de punto medio de Bressenham;

private void drawCircle(final int centerX, final int centerY, final int radius) { 
    int d = 3 - (2 * radius); 
    int x = 0; 
    int y = radius; 
    Color circleColor = Color.white; 

    do { 
     image.setPixel(centerX + x, centerY + y, circleColor); 
     image.setPixel(centerX + x, centerY - y, circleColor); 
     image.setPixel(centerX - x, centerY + y, circleColor); 
     image.setPixel(centerX - x, centerY - y, circleColor); 
     image.setPixel(centerX + y, centerY + x, circleColor); 
     image.setPixel(centerX + y, centerY - x, circleColor); 
     image.setPixel(centerX - y, centerY + x, circleColor); 
     image.setPixel(centerX - y, centerY - x, circleColor); 
     if (d < 0) { 
      d = d + (4 * x) + 6; 
     } else { 
      d = d + 4 * (x - y) + 10; 
      y--; 
     } 
     x++; 
    } while (x <= y); 
} 

La implementación de clase completa y muchos otros ejemplos de idiomas se pueden encontrar en el sitio de rosetta; http://rosettacode.org/wiki/Bitmap/Midpoint_circle_algorithm

Cuestiones relacionadas