Bresenham Circle Drawing Algorithm SRI LAXMI 2 of
Bresenham Circle Drawing Algorithm, SRI LAXMI
2 of 39 Contents KSL In today’s lecture we’ll have a look at: – Bresenham’s Circle drawing algorithm – Exercise using Bresenham’s algorithm
3 of 39 CIRCLE KSL The set of points that are all at a given distance ‘r’ from a center position (Xc, Yc).
4 of 39 A Simple Circle Drawing Algorithm KSL The equation for a circle is: where r is the radius of the circle So, we can write a simple circle drawing algorithm by solving the equation for y at unit x intervals using:
5 of 39 KSL A Simple Circle Drawing Algorithm (cont…)
6 of 39 KSL A Simple Circle Drawing Algorithm (cont…) However, unsurprisingly this is not a brilliant solution! Firstly, the resulting circle has large gaps where the slope approaches the vertical Secondly, the calculations are not very efficient – The square (multiply) operations – The square root operation – try really hard to avoid these! We need a more efficient, more accurate solution
7 of 39 Eight-Way Symmetry KSL The first thing we can notice to make our circle drawing algorithm more efficient is that circles centred at (0, 0) have eight-way symmetry (-x, y) (-y, x) (-y, -x) (-x, -y) (x, -y)
8 of 39 Mid-Point Circle Algorithm KSL Similarly to the case with lines, there is an incremental algorithm for drawing circles – the mid-point circle algorithm In the mid-point circle algorithm we use eight-way symmetry so only ever calculate the points for the top right eighth of a circle, and then use symmetry to get the rest of the points The mid-point circle algorithm was developed by Jack Bresenham, who we heard about earlier.
9 of 39 Mid-Point Circle Algorithm (cont…) KSL Assume that we have (xk+1, yk) (x , y ) k k just plotted point (xk, yk) The next point is a choice between (xk+1, yk) (xk+1, yk-1) and (xk+1, yk-1) We would like to choose the point that is nearest to the actual circle So how do we make this choice?
10 of 39 Mid-Point Circle Algorithm (cont…) KSL Let’s re-jig the equation of the circle slightly to give us: …(1) The equation evaluates as follows: By evaluating this function at the midpoint between the candidate pixels we can make our decision
11 of 39 Mid-Point Circle Algorithm (cont…) KSL Assuming we have just plotted the pixel at (xk, yk) so we need to choose between (xk+1, yk) and (xk+1, yk-1) Our decision variable can be defined as: mid point b/w 2 points (xk+1, Yk) and (Xk+1, Yk-1) is [xk+1, yk-1/2] . . . 2 If pk < 0 the midpoint is inside the circle and the pixel at yk is closer to the circle Otherwise the midpoint is outside and yk-1 is closer
12 of 39 Mid-Point Circle Algorithm (cont…) KSL To ensure things are as efficient as possible we can do all of our calculations incrementally First consider: ( since X +1 = X ) k k+1 or: where yk+1 is either yk or yk-1 depending on the sign of pk
13 of 39 KSL the initial value of Pk is given by the circle function at the position (0, r) as, Substituting k=0, Xk=0, Yk=r in the above function results in,
14 of 39 Mid-Point Circle Algorithm (cont…) KSL The first decision variable is given as: if r is an integer, then Po can be rounded to P 0= 1 – r. Then if pk < 0 then the next decision variable is given as: If pk > 0 then the decision variable is:
15 of 39 The Mid-Point Circle Algorithm KSL • MID-POINT CIRCLE ALGORITHM Input radius r and circle centre (xc, yc), then set the coordinates for the first point on the circumference of a circle centred on the origin as: • Calculate the initial value of the decision parameter as: • Perform the test, Starting with k = 0 at each position xk, perform the following test. (i) If pk < 0, the next point along the circle centred on (0, 0) is (xk+1, yk) and:
16 of 39 The Mid-Point Circle Algorithm (cont…) KSL (ii) If Pk >0 then the next point along the circle is (xk+1, yk-1) and: where = 2 Xk+2 and = 2 Yk – 2 • Identify the symmetry points in the other seven octants • Move (x, y) according to: • Repeat steps 3 to 5 until x >= y
17 of 39 Mid-Point Circle Algorithm Example KSL To see the mid-point circle algorithm in action lets use it to draw a circle centred at (0, 0) with radius 10 Determine the positions along the circle octant in the first quadrant from x=0 to x=y. The intial value of the decision parameter is P 0 = 1 -r = 1 -10 = -9 For circle centred on the coordinate origin, the initial point is (X 0, Y 0)=(0, 10) and initial increment terms for calculating the decision parameters are 2 X 0 =0 and 2 Y 0 = 20
18 of 39 KSL K=0 and P 0 = -9 (pk<0) K=1, P 1=P 0+2 Xk+1 => -9+2(1)+1 =-9+3=-6 K=2, P 2= P 1 +2(2)+1 = -6+4+1 = -1 K=3 P 3=P 2+2(3)+1 = -1+7= 6 K=4 (Pk>0) P 4= P 3+2(4)+1 -2(9) => 6+8+1 -18 = -3 K=5 p 5= p 4+2(5)+1 => -3+10+1 = 8 K=6 p 6=8+2(6)+1 -2(8) => 8+12+1 -16 = 5 K=7 p 7= 6 K=8 p 8=11 K=9 p 9 =20 (1, 10) (2, 10) (3, 10) (4, 9) (5, 9) (6, 8) (7, 7) (8, 6) (9, 5) (10, 4)
19 of 39 Mid-Point Circle Algorithm Example (cont…) KSL 10 k 9 pk (xk+1, yk+1) 2 xk+1 2 yk+1 0 -9 (1, 10) 2 20 1 -6 (2, 10) 4 20 5 2 -1 (3, 10) 6 20 4 3 6 (4, 9) 8 18 2 4 -3 (5, 9) 10 18 1 5 8 (6, 8) 12 16 6 5 (7, 7) 14 14 8 7 6 3 0 0 1 2 3 4 5 6 7 8 9 10
20 of 39 Mid-Point Circle Algorithm Exercise KSL Use the mid-point circle algorithm to draw the circle centred at (0, 0) with radius 15
21 of 39 KSL Mid-Point Circle Algorithm Example (cont…) 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 k 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 12 pk (xk+1, yk+1) 2 xk+1 2 yk+1
22 of 39 Mid-Point Circle Algorithm Summary KSL The key insights in the mid-point circle algorithm are: – Eight-way symmetry can hugely reduce the work in drawing a circle – Moving in unit steps along the x axis at each point along the circle’s edge we need to choose between two possible y coordinates
23 of 39 Mid-Point Circle Algorithm (cont…) KSL 6 5 4 3 1 2 3 4
24 of 39 Mid-Point Circle Algorithm (cont…) KSL 6 5 4 3 1 2 3 4
25 of 39 Mid-Point Circle Algorithm (cont…) KSL 6 M 5 4 3 1 2 3 4
26 of 39 Mid-Point Circle Algorithm (cont…) KSL 6 M 5 4 3 1 2 3 4
27 of 39 Mid-Point Circle Algorithm (cont…) KSL 6 M 5 4 3
28 of 39 KSL Blank Grid
29 of 39 KSL Blank Grid
30 of 39 Blank Grid KSL 10 9 8 7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 8 9 10
31 of 39 KSL Blank Grid
- Slides: 31