Bresenham's Circle Drawing Algorithm

We cannot display a continuous arc on the raster display. Instead, we have to choose the nearest pixel position to complete the arc.

From the following illustration, you can see that we have put the pixel at X, YX, Y location and now need to decide where to put the next pixel − at N X+1, YX+1, Y or at S X+1, Y−1X+1, Y−1.

This can be decidedby the decision parameter d.

  • If d <= 0, then NX+1,YX+1,Y is to be chosen as next pixel.
  • If d > 0, then SX+1,Y−1X+1,Y−1 is to be chosen as the next pixel.

Algorithm

Step 1	- Get the coordinates of the center of the circle and radius, and store them in x, y and R respectively. Set P=0 and Q=R.
Step 2	− Set decision parameter D = 3 – 2R. 
Step 3	− Repeat through step-8 while P ≤ Q. 
Step 4	− Call Draw Circle X,Y,P,QX,Y,P,Q. 
Step 5	− Increment the value of P.
Step 6	− If D < 0 then D = D + 4P + 6.
Step 7	− Else Set R = R - 1, D = D + 4P−QP−Q + 10.
Step 8	− Call Draw Circle X,Y,P,QX,Y,P,Q

Draw Circle Method(X,Y, P, Q).

Call Putpixel (X + P, Y + Q).

Call Putpixel (X - P, Y + Q).

Call Putpixel (X + P, Y - Q).

Call Putpixel (X - P, Y - Q).

Call Putpixel (X + Q, Y + P).

Call Putpixel (X - Q, Y + P).

Call Putpixel (X + Q, Y - P).

Call Putpixel (X - Q, Y - P).