You are on page 1of 18

Circle Drawing Techniques

Nihar Ranjan Roy,


https://sites.google.com/site/niharranjanroy/

Circle Generating Algorithms

Direct
Polar coordinate based
Bresenhams circle drawing algo
Mid-point circle drawing algo

Nihar Ranjan Roy,


https://sites.google.com/site/niharranjanroy/

Direct Circle Algorithm


Cartesian Coordinates
Circle equation:
( x - xc )2 + ( y - yc )2 = r2

r
(xc,,yc)

Step along x axis from xc - r to xc + r


and calculate
y = yc r2 - ( x - xc )2

Xc - r

Nihar Ranjan Roy,


https://sites.google.com/site/niharranjanroy/

Xc + r

Polar Coordinates
Polar coordinate equation
x = xc + r cos
y = yc + r sin
step through values of
from 0 to 2

Nihar Ranjan Roy,


https://sites.google.com/site/niharranjanroy/

r sin

r cos

Optimisation and speed-up


Symmetry of a
circle can be used

(-x,y)

(x,y)

Calculations of
(-y,x)
point Coordinates
only for a first one- (-y,-x)
eighth of a circle

(y,x)

(y,-x)
(-x,-y)

Nihar Ranjan Roy,


https://sites.google.com/site/niharranjanroy/

(x,-y)
5

Mid-Point Circle Drawing Algorithm


Yi

D=F(x,y)=x2+y2-r2

Yi-1

D
=0
<0
>0

Location
On circle
Inside circle
Outside circle

Nihar Ranjan Roy,


https://sites.google.com/site/niharranjanroy/

Yi-1/2

Xi Xi+1

Mid-Point Circle Drawing Algorithm


Yi

D=f(x,y)=x2+y2-r2

Yi-1

Yi-1/2

Di=f(Xi+1,Yi-1/2)=(Xi+1)2+(Yi-1/2)2-r2
Xi Xi+1
1

Di+1=(Xi+1+1)2+(Yi+1-1/2)2-r2

Now 2 - 1 gives
Di+1=Di+2Xi-(Y2i+1-Y2i)+(Yi+1-Yi)+3
Nihar Ranjan Roy,
https://sites.google.com/site/niharranjanroy/

Mid-Point Circle Drawing Algorithm.


Yi

Di+1=Di+2Xi-(Y2i+1-Y2i)+(Yi+1-Yi)+3
If Di<0 then
Yi+1=Yi
Di+1=Di+2Xi+3

Yi-1

Yi-1/2

Xi Xi+1

Else
Yi+1=Yi-1
Di+1=Di+2(Xi-Yi)+5

X++;

Nihar Ranjan Roy,


https://sites.google.com/site/niharranjanroy/

Mid-Point Circle Drawing Algorithm


Now the initial condition
D0=?
Put Xi=0 and Yi=r in eq. 1

(0,r)

D0= 5/4 r 1 - r

Nihar Ranjan Roy,


https://sites.google.com/site/niharranjanroy/

Mid-Point Circle Drawing Algorithm.


void midPointCircle(int xc, int yc, int rad, int
col)
//center of circle,radius,
{ int x=0, y=rad, d=1-rad;
putpixel(xc+x, yc+y, col);
while(y>x)
{
if(d<0)
d+=2*x+3;
else
{d+=2*(y-x)+5; y--;}
x++;
putpixel(xc+x, yc+y, col);
}

}
Nihar Ranjan Roy,
https://sites.google.com/site/niharranjanroy/

10

PROBLEM
Find all the points in the first quadrant for
radius=10

Nihar Ranjan Roy,


https://sites.google.com/site/niharranjanroy/

11

(x0,y0)=(0,10)
d0=1-r=1-10=-9
Current

next

0,10

d<0
d=d+2x+3=-9+2*0+3=-6

(1,10)

(1,10)

d<0
d=d+2x+3=-6+2*1+3=-1

(2,10)

(2,10)

d<0
d=d+2x+3=-1+2*2+3=6

(3,10)

(3,10)

d>0
d=d+2(x-y)+5=6-14+5=-3

(4,9)

(4,9)

d<0
d=d+2x+3=-3+2*4+3=8

(5,9)

(5,9)

d>0
d=d+2(x-y)+5=8-8+5=5

(6,8)

(6,8)

d>0
d=d+2(x-y)+5=5-4+5=5

(7,7)

Nihar Ranjan Roy,


https://sites.google.com/site/niharranjanroy/

12

Bresenhams Circle Drawing Technique


D(T)=(xi+1)2+yi2-r2
D(S)=(xi+1)2+(yi-1)2-r2

Yi
Yi-1

T
S

D(T)=always positive
D(S)=always negative

Xi Xi+1

di=D(T)+D(S)

Nihar Ranjan Roy,


https://sites.google.com/site/niharranjanroy/

13

Bresenhams Circle Drawing Technique


di=D(T)+D(S)

di
=0
<0
>0

Selection
Choose any
Choose T
Choose S

Yi
Yi-1

T
S

Xi Xi+1

Nihar Ranjan Roy,


https://sites.google.com/site/niharranjanro

14

Bresenhams Circle Drawing Technique


di=D(T)+D(S)

di=2(xi+1)2+yi2+(yi-1)2-2r2

Yi
Yi-1

T
S

di+1=2(xi+1+1)2+yi+12+(yi+1-1)2-2r2 2
Now 2 1 gives us
di+1=di+4xi+2(y2i+1-y2i)-2(yi+1-yi)+6

Nihar Ranjan Roy,


https://sites.google.com/site/niharranjanroy/

Xi Xi+1

15

Bresenhams Circle Drawing Technique


di+1=di+4xi+2(y2i+1-y2i)-2(yi+1-yi)+6 YYi
i-1
If di<0 then T is chosen so yi+1=yi

T
S

di+1=di+4xi+6
r

Else
S is chosen yi+1=yi-1
di+1=di+4(xi-yi)+10
d0=3-2r by subs xi=0 and yi=r in eq. 1

Nihar Ranjan Roy,


https://sites.google.com/site/niharranjanroy/

Xi Xi+1

16

Bresenhams circle algorithm


1. Input radius r
2. Plot a point at (0, r) set x=0 and y=r
3. Calculate the initial decision parameter as d0 = 3-2 r
4. while (x<y)
5. {if (d<0)
6.
d=d+4x+6;
7. else
8.
{d=d+4(x-y)+10;
9.
y--;}
10.x++;
11.}
12.
Nihar Ranjan Roy,
https://sites.google.com/site/niharranjanroy/

17

PROBLEM
Find all the points in the first octant for
radius=10 using Bresenhams circle drawing
technique.

Nihar Ranjan Roy,


https://sites.google.com/site/niharranjanroy/

18

You might also like