2009-06-20 3 views
8

Я делаю игру, где все движения основаны на сетке. Я также не хочу создавать сущности, которые могут путешествовать по кругу. Таким образом, у кого-нибудь есть предложения по созданию круга из сетки квадратов (например, как MS Paint использует инструмент круга, чтобы сделать круг из квадратных пикселей).Как сделать круг на сетке?

ответ

3

Вот моя реализация Java в среде Midpoint Circle Bressenham's algoritm;

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

Полное описание класса и многие другие языковые примеры можно найти на сайте rosetta; http://rosettacode.org/wiki/Bitmap/Midpoint_circle_algorithm