Sto facendo un gioco in cui tutto il movimento è basato sulla griglia. Inoltre, non voglio creare entità che possano viaggiare in circolo. Così chiunque ha qualche suggerimento per creare un cerchio da una griglia di quadrati (come il modo in cui MS Paint usa lo strumento cerchio per creare un cerchio con pixel quadrati).Come creare un cerchio su una griglia?
8
A
risposta
13
Check out Midpoint circle algorithm.
3
Ecco la mia implementazione Java del circuito Midpoint Circle di 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'implementazione della classe piena e molti altri esempi del linguaggio possono essere trovate sul sito rosetta; http://rosettacode.org/wiki/Bitmap/Midpoint_circle_algorithm