www.pudn.com > CG2Programs.rar > circleMidpoint.c
/* 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);
}