Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues...
-
Upload
branden-mills -
Category
Documents
-
view
216 -
download
0
Transcript of Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues...
![Page 1: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/1.jpg)
Midpoint Circle Algorithm
![Page 2: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/2.jpg)
04/21/23 14:47 Prepared by Narendra V G CSE MIT 2
More Raster Line Issues
• Fat lines with multiple pixel width
• Symmetric lines
• End point geometry – how should it look?
• Generating curves, e.g., circles, etc.
• Jaggies, staircase effect, aliasing...
![Page 3: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/3.jpg)
04/21/23 14:47 Prepared by Narendra V G CSE MIT 3
Generating Circles
![Page 4: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/4.jpg)
Where do we draw a circle???
Properties of a circle:• A circle is defined as a set of points that are all the given
distance (xc,yc). This distance relationship is expressed by the pythagorean theorem in Cartesian coordinates as
(x – xc)2 + (y – yc) 2 = r2
• We could use this equation to calculate the points on the circle circumference by stepping along x-axis in unit steps from xc-r to xc+r and calculate the corresponding y values at each position as
y = yc +(- ) (r2 – (xc –x )2)1/2
• This is not the best method:– Considerable amount of computation– Spacing between plotted pixels is not uniform
![Page 5: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/5.jpg)
Polar co-ordinates for a circle
• We could use polar coordinates r and θ,
x = xc + r cosθ y = yc + r sinθ
• A fixed angular step size can be used to plot equally spaced points along the circumference
• A step size of 1/r can be used to set pixel positions to approximately 1 unit apart for a continuous boundary
• But, note that circle sections in adjacent octants within one quadrant are symmetric with respect to the 45 deg line dividing the to octants
• Thus we can generate all pixel positions around a circle by calculating just the points within the sector from x=0 to x=y
• This method is still computationally expensive
![Page 6: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/6.jpg)
![Page 7: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/7.jpg)
![Page 8: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/8.jpg)
Bresenham to Midpoint
• Bresenham requires explicit equation– Not always convenient (many
equations are implicit)
– Based on implicit equations: Midpoint Algorithm (circle, ellipse, etc.)
– Implicit equations have the form F(x,y)=0.
![Page 9: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/9.jpg)
Midpoint Circle Algorithm
• We will first calculate pixel positions for a circle centered around the origin (0,0). Then, each calculated position (x,y) is moved to its proper screen position by adding xc to x and yc to y
• Note that along the circle section from x=0 to x=y in the first octant, the slope of the curve varies from 0 to -1
• Circle function around the origin is given byfcircle(x,y) = x2 + y2 – r2
• Any point (x,y) on the boundary of the circle satisfies the equation and circle function is zero
![Page 10: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/10.jpg)
04/21/23 14:47 Prepared by Narendra V G CSE MIT 10
Exploit 8-Point Symmetry
),( yx),( yx
),( yx ),( yx
),( xy),( xy
),( xy),( xy
![Page 11: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/11.jpg)
04/21/23 14:47 Prepared by Narendra V G CSE MIT 11
Once More: 8-Pt Symmetry
),( yx),( yx
),( yx ),( yx
),( xy),( xy
),( xy),( xy
![Page 12: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/12.jpg)
04/21/23 14:47 Prepared by Narendra V G CSE MIT 12
Only 1 Octant Needed We will generate 2nd Octant
![Page 13: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/13.jpg)
04/21/23 14:47 Prepared by Narendra V G CSE MIT 13
Generating pt (x,y) gives
the following 8 pts by symmetry:
{(x,y), (-x,y), (-x,-y), (x,-y),
(y,x), (-y,x), (-y,-x), (y,-x)}
![Page 14: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/14.jpg)
04/21/23 14:47 Prepared by Narendra V G CSE MIT 14
2nd Octant Is a Good Arc
• It is a function in this domain– single-valued
– no vertical tangents: |slope| 1• Lends itself to Bresenham
– only need consider E or SE
![Page 15: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/15.jpg)
04/21/23 14:47 Prepared by Narendra V G CSE MIT 15
Implicit Eq’s for Circle
• Let F(x,y) = x
2 + y
2 – r
2
• For (x,y) on the circle, F(x,y) = 0
• So, F(x,y) > 0 (x,y) Outside
• And, F(x,y) < 0 (x,y) Inside
![Page 16: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/16.jpg)
04/21/23 14:47 Prepared by Narendra V G CSE MIT 16
Choose E or SE
• Function is x
2 + y
2 – r
2 = 0
• So, F(M) 0 SE
• And, F(M) < 0 E
![Page 17: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/17.jpg)
04/21/23 14:47 Prepared by Narendra V G CSE MIT 17
Decision Variable d
Again, we let,
d = F(M )
![Page 18: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/18.jpg)
04/21/23 14:47 Prepared by Narendra V G CSE MIT 18
E
SE
M
ideal curve
Look at Case 1: E
![Page 19: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/19.jpg)
04/21/23 14:47 Prepared by Narendra V G CSE MIT 19
1( 1, )222 1 2( 1) ( )2
old p p
p
F yx
yx rp
d
dold < 0 E
![Page 20: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/20.jpg)
04/21/23 14:47 Prepared by Narendra V G CSE MIT 20
dold < 0 E
1( 2, )222 1 2( 2) ( )2
new p p
p p
F yx
yx r
d
![Page 21: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/21.jpg)
04/21/23 14:47 Prepared by Narendra V G CSE MIT 21
dold < 0 E
(2 3)pnew old xd d
Since,
32
)12()44()1( 2)2( 2
x p
x px px px p
![Page 22: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/22.jpg)
04/21/23 14:47 Prepared by Narendra V G CSE MIT 22
dold < 0 E
,
2 3
Enew old
E px
d d
where,
![Page 23: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/23.jpg)
04/21/23 14:47 Prepared by Narendra V G CSE MIT 23
E
SE
Mideal curve
Look at Case 2: SE
![Page 24: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/24.jpg)
04/21/23 14:47 Prepared by Narendra V G CSE MIT 24
dold 0 SE
Because,…, straightforward manipulation
3( 2, )222 3 2( 2) ( )2
(2 2 5)
new
new old p p
p p
p p
F yx
yx r
yd d x
d
![Page 25: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/25.jpg)
04/21/23 14:47 Prepared by Narendra V G CSE MIT 25
dold 0 SE
(2 2 5)new old p p
SEold
yd d x
d
I.e.,
2 2 5SE p pyx
![Page 26: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/26.jpg)
04/21/23 14:47 Prepared by Narendra V G CSE MIT 26
Note: Δ΄s Not Constant
depend on values of xp and yp
andE SE
![Page 27: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/27.jpg)
04/21/23 14:47 Prepared by Narendra V G CSE MIT 27
Summary
• Δ΄s are no longer constant over entire line
• Algorithm structure is exactly the same
• Major difference from the line algorithm
– Δ is re-evaluated at each step
– Requires real arithmetic
![Page 28: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/28.jpg)
04/21/23 14:47 Prepared by Narendra V G CSE MIT 28
Initial Condition
• Let r be an integer. Start at
• Next midpoint M lies at
• So,
),0( r
),1(2
1r
rrrrF 2)2(1),1(4
1
2
1
r4
5
![Page 29: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/29.jpg)
Circle Algorithm
void MidPointCircle(int radius ){
x = 0;y = radius;d = (5/4) - radius;
Circle_Points(x,y); while(y>x) {
If (d < 0) /*Select E */d = d + 2*x + 3else
{ /*Select SE */ d= d + 2*(x-y) + 5 y = y-1;
} x = x+1;
Circle_Points(x,y); }
Circle_Points(int x, int y){ putpixel(x,y); putpixel(y,x); putpixel(x,-y); putpixel(y,-x); putpixel(-x,-y); putpixel(-y,-x); putpixel(-x,y); putpixel(-y,x); }
![Page 30: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/30.jpg)
04/21/23 14:47 Prepared by Narendra V G CSE MIT 30
Getting to Integers
• Note the previous algorithm
involves real arithmetic
• Can we modify the algorithm to use
integer arithmetic?
![Page 31: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/31.jpg)
04/21/23 14:47 Prepared by Narendra V G CSE MIT 31
Integer Circle Algorithm
• Define a shift decision variable
• In the code, plug in
4
1dh
4
1hd
![Page 32: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/32.jpg)
04/21/23 14:47 Prepared by Narendra V G CSE MIT 32
Integer Circle Algorithm
• Now, the initialization is h = 1 - r
• So the initial value becomes
r
rrF
1
4
1)
4
5(
4
1
2
1),1(
![Page 33: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/33.jpg)
04/21/23 14:47 Prepared by Narendra V G CSE MIT 33
Integer Circle Algorithm
• Then,
• Since h an integer
10 becomes
4d h
1 0
4hh
![Page 34: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/34.jpg)
04/21/23 14:47 Prepared by Narendra V G CSE MIT 34
Integer Circle Algorithm
• But, h begins as an integer
• And, h gets incremented by integer
• Hence, we have an integer circle
algorithm
• Note: Sufficient to test for h < 0
![Page 35: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/35.jpg)
Fast Circle Algorithm
void MidPointCircle(int radius ){
x = 0;y = radius;d = 1- radius;
Circle_Points(x,y); while(y>x) {
If (d < 0) /*Select E */d = d + 2*x + 3else
{ /*Select SE */ d= d + 2*(x-y) + 5 y = y-1;
} x = x+1;
Circle_Points(x,y); }
Circle_Points(int x, int y){ putpixel(x,y); putpixel(y,x); putpixel(x,-y); putpixel(y,-x); putpixel(-x,-y); putpixel(-y,-x); putpixel(-x,y); putpixel(-y,x); }
![Page 36: Midpoint Circle Algorithm 1/3/2016 6:57 AMPrepared by Narendra V G CSE MIT2 More Raster Line Issues Fat lines with multiple pixel width Symmetric lines.](https://reader033.fdocuments.us/reader033/viewer/2022042822/5697bffc1a28abf838cc1a03/html5/thumbnails/36.jpg)
04/21/23 14:47 Prepared by Narendra V G CSE MIT 36
End of Midpoint Circle