Sei sulla pagina 1di 31

SRI LAXMI

Bresenham
Circle Drawing Algorithm,

2
of
39
KSL
Contents


In todays lecture well have a look at:
Bresenhams Circle drawing algorithm
Exercise using Bresenhams algorithm
3
of
39
KSL
CIRCLE
The set of points that are all at a given
distance r from a center position (Xc,Yc).


4
of
39
KSL
A Simple Circle Drawing Algorithm
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:

2 2 2
r y x = +
2 2
x r y =
5
of
39
KSL
A Simple Circle Drawing Algorithm
(cont)
20 0 20
2 2
0
~ = y
20 1 20
2 2
1
~ = y
20 2 20
2 2
2
~ = y
6 19 20
2 2
19
~ = y
0 20 20
2 2
20
~ = y
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
KSL
Eight-Way Symmetry
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)
(-y, -x)
(-y, x)
(-x, y)
2
R
8
of
39
KSL
Mid-Point Circle Algorithm
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
a l g o r i t h m w a s
devel oped by Jack
Bresenham, who we
heard about earlier.
9
of
39
KSL
Mid-Point Circle Algorithm (cont)
(x
k
+1, y
k
)
(x
k
+1, y
k
-1)
(x
k
, y
k
)
Assume that we have
just plotted point (x
k
, y
k
)
The next point is a
choice between (x
k
+1, y
k
)
and (x
k
+1, y
k
-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
KSL
Mid-Point Circle Algorithm (cont)
Lets 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
2 2 2
) , ( r y x y x f
circ
+ =

>
=
<

, 0
, 0
, 0
) , ( y x f
circ
boundary circle the inside is ) , ( if y x
boundary circle on the is ) , ( if y x
boundary circle the outside is ) , ( if y x
11
of
39
KSL
Mid-Point Circle Algorithm (cont)
Assuming we have just plotted the pixel at (x
k
,y
k
) so
we need to choose between (x
k
+1,y
k
) and (x
k
+1,y
k
-1)
Our decision variable can be defined as:mid point b/w
2 points (x
k
+1,Y
k
) and (Xk+1, Y
k
-1) is [x
k
+1, y
k
-1/2]

...2
If p
k
< 0 the midpoint is inside the circle and the
pixel at y
k
is closer to the circle
Otherwise the midpoint is outside and y
k
-1 is closer
2 2 2
)
2
1
( ) 1 (
)
2
1
, 1 (
r y x
y x f p
k k
k k circ k
+ + =
+ =
12
of
39
KSL
Mid-Point Circle Algorithm (cont)
To ensure things are as efficient as possible
we can do all of our calculations incrementally
First consider: ( since X
k
+1 = X
k+1
)


or:

where y
k+1
is either y
k
or y
k
-1 depending on the
sign of p
k
( )
( )
2
2
1
2
1 1 1
2
1
] 1 ) 1 [(
2
1
, 1
r y x
y x f p
k k
k k circ k
+ + + =
+ =
+
+ + +
1 ) ( ) ( ) 1 ( 2
1
2 2
1 1
+ + + + =
+ + + k k k k k k k
y y y y x p p
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,




2 2 2
)
2
1
( ) 1 (
)
2
1
, 1 (
r y x
y x f p
k k
k k circ k
+ + =
+ =
14
of
39
KSL
Mid-Point Circle Algorithm (cont)
The first decision variable is given as:




if r is an integer, then Po can be rounded to P0= 1 r.
Then if p
k
< 0 then the next decision variable is
given as:
If p
k
> 0 then the decision variable is:
r
r r
r f p
circ
=
+ =
=
4
5
)
2
1
( 1
)
2
1
, 1 (
2 2
0
1 2
1 1
+ + =
+ + k k k
x p p
1 2 1 2
1 1
+ + + =
+ + k k k k
y x p p
15
of
39
KSL
The Mid-Point Circle Algorithm
MID-POINT CIRCLE ALGORITHM
Input radius r and circle centre (x
c
, y
c
), 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 x
k
,
perform the following test.
(i) If p
k
< 0, the next point along the circle centred on (0, 0)
is (x
k
+1, y
k
) and:
) , 0 ( ) , (
0 0
r y x =
r p =
4
5
0
1 2
1 1
+ + =
+ + k k k
x p p
16
of
39
KSL
The Mid-Point Circle Algorithm (cont)
(ii) If Pk >0 then the next point along the circle is
(x
k
+1, y
k
-1) and:

where = 2X
k
+2 and = 2Y
k
2
Identify the symmetry points in the other seven
octants
Move (x, y) according to:

Repeat steps 3 to 5 until x >= y
1
2
+ k
y
1 1 1
2 1 2
+ + +
+ + =
k k k k
y x p p
c
x x x + =
c
y y y + =
1
2
+ k
x
17
of
39
KSL
Mid-Point Circle Algorithm Example
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
P0 = 1-r = 1-10 = -9
For circle centred on the coordinate origin, the
initial point is (X0,Y0)=(0,10) and initial increment
terms for calculating the decision parameters are
2X0 =0 and 2Y0 = 20

18
of
39
KSL

K=0 and P0 = -9 (1,10)
(pk<0)
K=1, P1=P0+2Xk+1 => -9+2(1)+1 =-9+3=-6 (2,10)
K=2, P2= P1 +2(2)+1 = -6+4+1 = -1 (3,10)
K=3 P3=P2+2(3)+1 = -1+7= 6 (4,9)
K=4 (Pk>0)
P4= P3+2(4)+1-2(9) => 6+8+1-18 = -3 (5,9)
K=5 p5= p4+2(5)+1 => -3+10+1 = 8 (6,8)
K=6 p6=8+2(6)+1-2(8) => 8+12+1-16 = 5 (7,7)
K=7 p7= 6 (8,6)
K=8 p8=11 (9,5)
K=9 p9 =20 (10,4)

1 1 1
2 1 2
+ + +
+ + =
k k k k
y x p p
1 2
1 1
+ + =
+ + k k k
x p p
19
of
39
KSL
Mid-Point Circle Algorithm Example
(cont)
9
7
6
5
4
3
2
1
0
8
9 7 6 5 4 3 2 1 0 8 10
10
k p
k

(x
k+1
,y
k+1
)
2x
k+1
2y
k+1
0
1
2
3
4
5
6
-9
-6
-1
6
-3
8
5
(1,10)
(2,10)
(3,10)
(4,9)
(5,9)
(6,8)
(7,7)

2
4
6
8
10
12
14
20
20
20
18
18
16
14

20
of
39
KSL
Mid-Point Circle Algorithm Exercise
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)
k p
k
(x
k+1
,y
k+1
)
2x
k+1

2y
k+1
0
1
2
3
4
5
6
7
8
9
10
11
12
9
7
6
5
4
3
2
1
0
8
9 7 6 5 4 3 2 1 0 8 10
10
13 12 11 14
15
13
12
14
11
16
15 16
22
of
39
KSL
Mid-Point Circle Algorithm Summary
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 circles edge we need to
choose between two possible y coordinates
23
of
39
KSL
Mid-Point Circle Algorithm (cont)
6
2 3 4 1
5
4
3
24
of
39
KSL
Mid-Point Circle Algorithm (cont)
6
2 3 4 1
5
4
3
25
of
39
KSL
Mid-Point Circle Algorithm (cont)
M
6
2 3 4 1
5
4
3
26
of
39
KSL
Mid-Point Circle Algorithm (cont)
M
6
2 3 4 1
5
4
3
27
of
39
KSL
Mid-Point Circle Algorithm (cont)
M
6
2 3 4 1
5
4
3
28
of
39
KSL
Blank Grid
29
of
39
KSL
Blank Grid
30
of
39
KSL
Blank Grid
9
7
6
5
4
3
2
1
0
8
9 7 6 5 4 3 2 1 0 8 10
10
31
of
39
KSL
Blank Grid

Potrebbero piacerti anche