Back

2. Midpoint Circle Drawing Algorithm

#include <graphics.h>

void circleplotPoints(int xc,int yc,int x,int y){
    putpixel(xc + x, yc + y, WHITE);
    putpixel(xc - x, yc + y, WHITE);
    putpixel(xc + x, yc - y, WHITE);
    putpixel(xc - x, yc - y, WHITE);
    putpixel(xc + y, yc + x, WHITE);
    putpixel(xc - y, yc + x, WHITE);
    putpixel(xc + y, yc - x, WHITE);
    putpixel(xc - y, yc - x, WHITE);
}

void midpointCircle(int xc, int yc, int r) {
    int x = 0, y = r;
    int p = 1 - r;

    circleplotPoints(xc,yc,x,y);
    while (x <= y) {
        
        x++;
        if (p < 0) {
            p += 2 * x + 1;
        } else {
            y--;
            p += 2 * (x - y) + 1;
        }
        circleplotPoints(xc,yc,x,y);
        delay(4);
    }
}

int main() {
    int gd = DETECT, gm;
    initgraph(&gd, &gm, (char*)"");
    
    int xc = 300, yc = 250, radius = 150;
    midpointCircle(xc, yc, radius);
    
    getch();
    closegraph();
    return 0;
}