Bitmap/Midpoint circle algorithm: Difference between revisions

→‎{{header|evaldraw}}: evaldraw solution for midpoint circle aka bresenham circle
(→‎{{header|evaldraw}}: evaldraw solution for midpoint circle aka bresenham circle)
Line 1,020:
END PROGRAM
</syntaxhighlight>
 
=={{header|Evaldraw}}==
Gives slightly faster (in some cases), but more importantly prettier circles than the builtin drawsph(x,y,-rad) function.
<syntaxhighlight lang="C">()
{
cls(0);
setcol(0xffffff);
srand(1234);
for(i=0; i<1000; i++) {
rad = int( abs(nrnd*10) );
x=rnd*xres;
y=rnd*yres;
drawcircle(x,y,rad);
//drawsph(x,y,-rad);
}
}
 
drawcircle(cx,cy,r) {
if (cx+r < 0 || cy+r < 0) return;
if (cx-r > xres || cy-r > yres) return;
r = int(r);
if (r<=0) return;
r2 = r+r;
x = r; y = 0;
dy = -2; dx = r2+r2 - 4;
d = r2-1;
while(y<=x) {
setpix(cx-x, cy-y);
setpix(cx+x, cy-y);
setpix(cx-x, cy+y);
setpix(cx+x, cy+y);
setpix(cx-y, cy-x);
setpix(cx+y, cy-x);
setpix(cx-y, cy+x);
setpix(cx+y, cy+x);
d += dy;
dy -= 4;
++y;
if (d<0) {
d += dx;
dx -= 4;
--x;
}
}
}</syntaxhighlight>
 
=={{header|FBSL}}==
'''Using pure FBSL's built-in graphics functions:'''
63

edits