Как сделать круг на сетке? - PullRequest
10 голосов
/ 20 июня 2009

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

Ответы [ 2 ]

15 голосов
/ 20 июня 2009
3 голосов
/ 14 октября 2011

Вот моя Java-реализация алгоритма срединного круга Брессенхэма;

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...