Bitmap/Midpoint circle algorithm: Difference between revisions
Content added Content deleted
(Updated D entry) |
(Updated D entry) |
||
Line 304: | Line 304: | ||
</pre> |
</pre> |
||
=={{header|D}}== |
=={{header|D}}== |
||
Uses the |
Uses the bitmap module from the Bitmap Task. |
||
<lang d>import |
<lang d>import bitmap: Image, RGB; |
||
void circle(Image img, in int x0, in int y0 |
void circle(Color)(Image!Color img, in int x0, in int y0, |
||
in Color color) pure nothrow { |
in int radius, in Color color) pure nothrow { |
||
int f = 1 - radius; |
int f = 1 - radius; |
||
int ddfX = 1; |
int ddfX = 1; |
||
Line 314: | Line 314: | ||
int x = 0; |
int x = 0; |
||
int y = radius; |
int y = radius; |
||
img[y0 + radius |
img[x0, y0 + radius] = color; |
||
img[y0 - radius |
img[x0, y0 - radius] = color; |
||
img |
img[x0 + radius, y0] = color; |
||
img |
img[x0 - radius, y0] = color; |
||
while (x < y) { |
while (x < y) { |
||
Line 328: | Line 328: | ||
ddfX += 2; |
ddfX += 2; |
||
f += ddfX; |
f += ddfX; |
||
img[ |
img[x0 + x, y0 + y] = color; |
||
img |
img[x0 - x, y0 + y] = color; |
||
img |
img[x0 + x, y0 - y] = color; |
||
img[ |
img[x0 - x, y0 - y] = color; |
||
img[ |
img[x0 + y, y0 + x] = color; |
||
img |
img[x0 - y, y0 + x] = color; |
||
img |
img[x0 + y, y0 - x] = color; |
||
img[ |
img[x0 - y, y0 - x] = color; |
||
} |
} |
||
} |
} |
||
void main() { |
void main() { |
||
auto img = new Image(25, 25); |
auto img = new Image!RGB(25, 25); |
||
img.clear( |
img.clear(RGB.white); |
||
circle(img, 12, 12, 12, |
circle(img, 12, 12, 12, RGB.black); |
||
img.textualShow(); |
img.textualShow(); |
||
}</lang> |
}</lang> |