/* ************************************************************************** */ /* */ /* ML_circle.c */ /* | Project : monochromelib */ /* */ /* By: Pierre "PierrotLL" Le Gall */ /* Last updated: 2011/11/22 */ /* */ /* ************************************************************************** */ #include void ML_circle(int x, int y, int radius, ML_Color color) { int plot_x, plot_y, d; if(radius < 0) return; plot_x = 0; plot_y = radius; d = 1 - radius; ML_pixel(x, y+plot_y, color); if(radius) { ML_pixel(x, y-plot_y, color); ML_pixel(x+plot_y, y, color); ML_pixel(x-plot_y, y, color); } while(plot_y > plot_x) { if(d < 0) d += 2*plot_x+3; else { d += 2*(plot_x-plot_y)+5; plot_y--; } plot_x++; if(plot_y >= plot_x) { ML_pixel(x+plot_x, y+plot_y, color); ML_pixel(x-plot_x, y+plot_y, color); ML_pixel(x+plot_x, y-plot_y, color); ML_pixel(x-plot_x, y-plot_y, color); } if(plot_y > plot_x) { ML_pixel(x+plot_y, y+plot_x, color); ML_pixel(x-plot_y, y+plot_x, color); ML_pixel(x+plot_y, y-plot_x, color); ML_pixel(x-plot_y, y-plot_x, color); } } }