2009-06-20 8 views
8

Je fais un jeu où tout mouvement est basé sur la grille. Je ne veux pas non plus faire des entités qui peuvent circuler en cercle. Donc, quelqu'un a-t-il des suggestions pour créer un cercle sur une grille de carrés (comme la façon dont MS Paint utilise l'outil cercle pour faire un cercle de pixels carrés).Comment faire un cercle sur une grille?

Répondre

3

Voici ma mise en œuvre Java de l'algoritm Midpoint Circle 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); 
} 

L'implémentation de classe complète et de nombreux autres exemples de langage peuvent être trouvés sur le site de Rosetta; http://rosettacode.org/wiki/Bitmap/Midpoint_circle_algorithm

Questions connexes