/* circleMidpoint, Chapter 3, p. 102 */ /* EXAMPLE STARTS HERE */ #include "device.h" void circleMidpoint (int xCenter, int yCenter, int radius) { int x = 0; int y = radius; int p = 1 - radius; void circlePlotPoints (int, int, int, int); /* Plot first set of points */ circlePlotPoints (xCenter, yCenter, x, y); while (x < y) { x++; if (p < 0) p += 2 * x + 1; else { y--; p += 2 * (x - y) + 1; } circlePlotPoints (xCenter, yCenter, x, y); } } void circlePlotPoints (int xCenter, int yCenter, int x, int y) { setPixel (xCenter + x, yCenter + y); setPixel (xCenter - x, yCenter + y); setPixel (xCenter + x, yCenter - y); setPixel (xCenter - x, yCenter - y); setPixel (xCenter + y, yCenter + x); setPixel (xCenter - y, yCenter + x); setPixel (xCenter + y, yCenter - x); setPixel (xCenter - y, yCenter - x); } /* EXAMPLE ENDS HERE */ void main (int argc, char ** argv) { long windowID = openGraphics (*argv, WINDOW_WIDTH, WINDOW_HEIGHT); setBackground (WHITE); setColor (BLACK); circleMidpoint (WINDOW_WIDTH/2, WINDOW_HEIGHT/2, WINDOW_WIDTH/4); sleep (10); closeGraphics (windowID); }