RosettaCodeData/Task/Bitmap-Midpoint-circle-algorithm/Java/bitmap-midpoint-circle-algorithm.java

36 lines
1.1 KiB
Java
Raw Permalink Normal View History

2023-07-01 11:58:00 -04:00
import java.awt.Color;
public class MidPointCircle {
2026-04-30 12:34:36 -04:00
private BasicBitmapStorage image;
2023-07-01 11:58:00 -04:00
2026-04-30 12:34:36 -04:00
public MidPointCircle(final int imageWidth, final int imageHeight) {
this.image = new BasicBitmapStorage(imageWidth, imageHeight);
}
2023-07-01 11:58:00 -04:00
2026-04-30 12:34:36 -04:00
private void drawCircle(final int centerX, final int centerY, final int radius) {
int d = (5 - radius * 4)/4;
int x = 0;
int y = radius;
Color circleColor = Color.white;
2023-07-01 11:58:00 -04:00
2026-04-30 12:34:36 -04:00
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 += 2 * x + 1;
} else {
d += 2 * (x - y) + 1;
y--;
}
x++;
} while (x <= y);
2023-07-01 11:58:00 -04:00
2026-04-30 12:34:36 -04:00
}
2023-07-01 11:58:00 -04:00
}