Circle Drawing Algorithms
-
Upload
niharranjanroy -
Category
Documents
-
view
212 -
download
0
description
Transcript of Circle Drawing Algorithms
![Page 1: Circle Drawing Algorithms](https://reader031.fdocuments.us/reader031/viewer/2022020516/577c783d1a28abe0548f3cec/html5/thumbnails/1.jpg)
Nihar Ranjan Roy,
https://sites.google.com/site/niharranjanroy/
1
Circle Drawing Techniques
![Page 2: Circle Drawing Algorithms](https://reader031.fdocuments.us/reader031/viewer/2022020516/577c783d1a28abe0548f3cec/html5/thumbnails/2.jpg)
Nihar Ranjan Roy,
https://sites.google.com/site/niharranjanroy/
2
Circle Generating Algorithms
» Direct
» Polar coordinate based
» Bresenham’s circle drawing algo
» Mid-point circle drawing algo
![Page 3: Circle Drawing Algorithms](https://reader031.fdocuments.us/reader031/viewer/2022020516/577c783d1a28abe0548f3cec/html5/thumbnails/3.jpg)
Nihar Ranjan Roy,
https://sites.google.com/site/niharranjanroy/
3
Direct Circle Algorithm
Cartesian Coordinates
Circle equation:
( x - xc )2 + ( y - yc )2 = r2
Step along x axis from xc - r to xc + r
and calculate
y = yc ± r2 - ( x - xc )2
(xc,,yc)
r
Xc - r Xc + r
![Page 4: Circle Drawing Algorithms](https://reader031.fdocuments.us/reader031/viewer/2022020516/577c783d1a28abe0548f3cec/html5/thumbnails/4.jpg)
Nihar Ranjan Roy,
https://sites.google.com/site/niharranjanroy/
4
Polar Coordinates
Polar coordinate equation
x = xc + r cos
y = yc + r sin
step through values of
from 0 to 2πr cos
r sin
![Page 5: Circle Drawing Algorithms](https://reader031.fdocuments.us/reader031/viewer/2022020516/577c783d1a28abe0548f3cec/html5/thumbnails/5.jpg)
Nihar Ranjan Roy,
https://sites.google.com/site/niharranjanroy/
5
Optimisation and speed-up
• Symmetry of a
circle can be used
• Calculations of
point Coordinates
only for a first one-
eighth of a circle
(x,y)
(y,x)
(x,-y)
(y,-x)
(-x,y)
(-y,x)
(-y,-x)
(-x,-y)
![Page 6: Circle Drawing Algorithms](https://reader031.fdocuments.us/reader031/viewer/2022020516/577c783d1a28abe0548f3cec/html5/thumbnails/6.jpg)
Nihar Ranjan Roy,
https://sites.google.com/site/niharranjanroy/
6
Mid-Point Circle Drawing Algorithm
D=F(x,y)=x2+y2-r2
Xi Xi+1
Yi
Yi-1
Yi-1/2
D Location
=0 On circle
<0 Inside circle
>0 Outside circle
![Page 7: Circle Drawing Algorithms](https://reader031.fdocuments.us/reader031/viewer/2022020516/577c783d1a28abe0548f3cec/html5/thumbnails/7.jpg)
Nihar Ranjan Roy,
https://sites.google.com/site/niharranjanroy/
7
Mid-Point Circle Drawing Algorithm
D=f(x,y)=x2+y2-r2
Di=f(Xi+1,Yi-1/2)=(Xi+1)2+(Yi-1/2)
2-r2
Di+1=(Xi+1+1)2+(Yi+1-1/2)
2-r2
Now 2 - 1 gives
Di+1=Di+2Xi-(Y2
i+1-Y2i)+(Yi+1-Yi)+3
Xi Xi+1
Yi
Yi-1
Yi-1/2
1
2
![Page 8: Circle Drawing Algorithms](https://reader031.fdocuments.us/reader031/viewer/2022020516/577c783d1a28abe0548f3cec/html5/thumbnails/8.jpg)
Nihar Ranjan Roy,
https://sites.google.com/site/niharranjanroy/
8
Mid-Point Circle Drawing Algorithm….
Di+1=Di+2Xi-(Y2
i+1-Y2i)+(Yi+1-Yi)+3
If Di<0 then
Yi+1=Yi
Di+1=Di+2Xi+3
Else
Yi+1=Yi-1
Di+1=Di+2(Xi-Yi)+5
X++;
Xi Xi+1
Yi
Yi-1
Yi-1/2
![Page 9: Circle Drawing Algorithms](https://reader031.fdocuments.us/reader031/viewer/2022020516/577c783d1a28abe0548f3cec/html5/thumbnails/9.jpg)
Nihar Ranjan Roy,
https://sites.google.com/site/niharranjanroy/
9
Now the initial condition
D0=?
Put Xi=0 and Yi=r in eq. 1
D0= 5/4 – r ≈ 1 - r
Mid-Point Circle Drawing Algorithm…
(0,r)
![Page 10: Circle Drawing Algorithms](https://reader031.fdocuments.us/reader031/viewer/2022020516/577c783d1a28abe0548f3cec/html5/thumbnails/10.jpg)
Nihar Ranjan Roy,
https://sites.google.com/site/niharranjanroy/
10
void midPointCircle(int xc, int yc, int rad, intcol)
//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);
}
}
Mid-Point Circle Drawing Algorithm….
![Page 11: Circle Drawing Algorithms](https://reader031.fdocuments.us/reader031/viewer/2022020516/577c783d1a28abe0548f3cec/html5/thumbnails/11.jpg)
PROBLEM
Find all the points in the first quadrant for
radius=10
Nihar Ranjan Roy,
https://sites.google.com/site/niharranjanroy/
11
![Page 12: Circle Drawing Algorithms](https://reader031.fdocuments.us/reader031/viewer/2022020516/577c783d1a28abe0548f3cec/html5/thumbnails/12.jpg)
(x0,y0)=(0,10)
d0=1-r=1-10=-9
Nihar Ranjan Roy,
https://sites.google.com/site/niharranjanroy/
12
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)
![Page 13: Circle Drawing Algorithms](https://reader031.fdocuments.us/reader031/viewer/2022020516/577c783d1a28abe0548f3cec/html5/thumbnails/13.jpg)
Nihar Ranjan Roy,
https://sites.google.com/site/niharranjanroy/
13
Bresenhams Circle Drawing Technique
D(T)=(xi+1)2+yi2-r2
D(S)=(xi+1)2+(yi-1)2-r2
D(T)=always positive
D(S)=always negative
di=D(T)+D(S)Xi
Xi+1
Yi
Yi-1
T
S
r
![Page 14: Circle Drawing Algorithms](https://reader031.fdocuments.us/reader031/viewer/2022020516/577c783d1a28abe0548f3cec/html5/thumbnails/14.jpg)
Nihar Ranjan Roy,
https://sites.google.com/site/niharranjanro
y/
14
Bresenhams Circle Drawing Technique
di=D(T)+D(S)
XiXi+1
Yi
Yi-1
T
S
r
di Selection
=0 Choose any
<0 Choose T
>0 Choose S
![Page 15: Circle Drawing Algorithms](https://reader031.fdocuments.us/reader031/viewer/2022020516/577c783d1a28abe0548f3cec/html5/thumbnails/15.jpg)
Nihar Ranjan Roy,
https://sites.google.com/site/niharranjanroy/
15
Bresenhams Circle Drawing Technique
di=D(T)+D(S)
di=2(xi+1)2+yi2+(yi-1)2-2r2
di+1=2(xi+1+1)2+yi+12+(yi+1-1)2-2r2
Now 2 – 1 gives us
di+1=di+4xi+2(y2i+1-y
2i)-2(yi+1-yi)+6
XiXi+1
Yi
Yi-1
T
S
r
1
2
![Page 16: Circle Drawing Algorithms](https://reader031.fdocuments.us/reader031/viewer/2022020516/577c783d1a28abe0548f3cec/html5/thumbnails/16.jpg)
Nihar Ranjan Roy,
https://sites.google.com/site/niharranjanroy/
16
Bresenhams Circle Drawing Technique
di+1=di+4xi+2(y2i+1-y
2i)-2(yi+1-yi)+6
If di<0 then T is chosen so yi+1=yi
di+1=di+4xi+6
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. 1Xi
Xi+1
Yi
Yi-1
T
S
r
![Page 17: Circle Drawing Algorithms](https://reader031.fdocuments.us/reader031/viewer/2022020516/577c783d1a28abe0548f3cec/html5/thumbnails/17.jpg)
Nihar Ranjan Roy,
https://sites.google.com/site/niharranjanroy/
17
Bresenham’s 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.
![Page 18: Circle Drawing Algorithms](https://reader031.fdocuments.us/reader031/viewer/2022020516/577c783d1a28abe0548f3cec/html5/thumbnails/18.jpg)
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