42 lines
1023 B
D
42 lines
1023 B
D
import bitmap: Image, RGB;
|
|
|
|
void circle(Color)(Image!Color img, in int x0, in int y0,
|
|
in int radius, in Color color)
|
|
pure nothrow @nogc @safe {
|
|
int f = 1 - radius;
|
|
int ddfX = 1;
|
|
int ddfY = -2 * radius;
|
|
int x = 0;
|
|
int y = radius;
|
|
img[x0, y0 + radius] = color;
|
|
img[x0, y0 - radius] = color;
|
|
img[x0 + radius, y0] = color;
|
|
img[x0 - radius, y0] = color;
|
|
|
|
while (x < y) {
|
|
if (f >= 0) {
|
|
y--;
|
|
ddfY += 2;
|
|
f += ddfY;
|
|
}
|
|
x++;
|
|
ddfX += 2;
|
|
f += ddfX;
|
|
img[x0 + x, y0 + y] = color;
|
|
img[x0 - x, y0 + y] = color;
|
|
img[x0 + x, y0 - y] = color;
|
|
img[x0 - x, y0 - y] = color;
|
|
img[x0 + y, y0 + x] = color;
|
|
img[x0 - y, y0 + x] = color;
|
|
img[x0 + y, y0 - x] = color;
|
|
img[x0 - y, y0 - x] = color;
|
|
}
|
|
}
|
|
|
|
void main() @safe {
|
|
auto img = new Image!RGB(25, 25);
|
|
img.clear(RGB.white);
|
|
circle(img, 12, 12, 12, RGB.black);
|
|
img.textualShow;
|
|
}
|