Как сделать круг на сетке?
Я делаю игру, в которой все движение основано на сетке. Я также не хочу создавать сущности, которые могут путешествовать по кругу. У кого-нибудь есть предложения по созданию круга из сетки квадратов (например, как MS Paint использует инструмент "круг", чтобы сделать круг из квадратных пикселей).
2 ответов
вот моя реализация 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