2. What is Circle
A circle is the set of points in a plane that are equidistant from
a given point O. The distance r from the center is called the
radius, and the point O is called the center. Twice the radius
is known as the diameter. The angle a circle subtends from
its center is a full angle, equal to 360° or 2 radians.
4. Circle Cont..
A circle has the maximum possible area for a given
perimeter, and the minimum possible perimeter for a given
area.
The perimeter C of a circle is called the circumference, and is
given by
C = 2 r
5. Circle Drawing Techniques
- Input for circle drawing
. one center point (xc, yc) and
. radius r
Now, using these two inputs there are a number of ways
to draw a circle.
6. Circle Drawing Techniques
These techniques have:
- Understanding curve
. very simple to
. complex
- Time complexity
. inefficient to
. efficient
7. Circle Drawing Using Cartesian
Coordinates
This technique uses the equation for a circle with radius r
centered at (0,0):
x2 + y2 = r2,
an obvious choice is to plot
y = ± r2 - x2
against different values of x.
8. Circle Drawing Using Cartesian
Coordinates
Using above equation a circle can be easily drawn. The value
of x varies from r-xc to r+xc, and y is calculated using above
formula. Using this technique a simple algorithm will be:
9. Circle Drawing Using Cartesian
Coordinates
for x= radius-xcenter to radius+xcenter
y = yc + r2 – ( x - xc )2
drawPixel (x, y)
y = yc - r2 – ( x - xc )2
drawPixel (x, y)
10. Drawbacks/ Shortcomings
This works, but …
. is inefficient
. multiplications & square root
. large gaps in the circle for values of x close to
r
(as shown in the next figure)
12. Circle Drawing Using Polar Coordinates
Polar Coordinates:
Radius r
Angle
calculate points along the circular boundary
using polar coordinates r and
Expressing the circle equation in parametric polar form yields
the pair of equations:
13. Circle Drawing Using Polar Coordinates
Cont…
x = xc + r cos
y = yc + r sin
Using above equation circle can be plotted by calculating x
and y coordinates as takes values from 0 to 360 degrees or
0 to 2 radians.
14. Circle Drawing Using Polar Coordinates
Cont…
The step size for depends on:
. application and
. display device
Larger angular separations along the circumference can be
connected with straight-line segments to approximate the
circular path.
Step size at 1/r gives continuous boundary
This plots pixel positions that are approximately one unit apart.
15. Polar Coordinates Algorithm
Circle2 (xcenter, ycenter, radius)
for = 0 to 2 step 1/r
x = xc + r * cos
y = yc + r * sin
drawPixel (x, y)
16. Discussion
- very simple technique
- solves problem of unequal space
- is inefficient in terms of calculations
- involves floating point calculations
17. Reduction in Calculations
Symmetry in octants
Upper half circle symmetric to lower half circle
Left half circle symmetric to right half circle
Finally two halves of the same quarters are symmetric to
each other
19. Optimizing the Algorithm
Now this algorithm can be optimized by using symmetric
octants as:
Circle2 (xcenter, ycenter, radius)
for = 0 to /4 step 1/r
x = xc + r * cos
y = yc + r * sin
DrawSymmetricPoints(xcenter, ycenter, x,y)
21. Inefficiency Still Prevails
Reduction in calculations by exploiting symmetric octants
but…
Floating point calculations still involved
22. Midpoint Circle Algorithm
Derivation of decision parameter
Decrement decision in the y coordinate against increment of
x coordinate
23. Midpoint Circle Algorithm
Consider only the first octant of a circle of radius r centered
on the origin.
We begin by plotting point (0, r) and end when x = y.
24. Midpoint Circle Algorithm
The decision at each step is whether to choose :
the pixel to the right of the current pixel
or
the pixel which is to the right and below the current pixel
(8-way stepping)
25. Midpoint Circle Algorithm
Assume:
P = (xk, yk) is the current
pixel.
Q = (xk+1, yk) is the pixel
to the right
R = (xk+1, yk -1) is the
pixel to the right and below.
X = Y
X2- Y2 - r2 =0
26. Midpoint Circle Algorithm
To apply the midpoint method, we define a circle function:
fcircle(x, y) = x2 + y2 – r2
The following relations can be observed:
f circle (x, y) < 0,if (x, y) is inside the circle boundary
f circle (x, y) = 0,if (x, y) is on the circle boundary
f circle (x, y) > 0,if (x, y) is outside the circle
boundary
27. Midpoint Circle Algorithm
Circle function tests are performed for the midpoints between
pixels near the circle path at each sampling step.
29. Midpoint Circle Algorithm
Figure given in previous slide shows the midpoint between
the two candidate pixels at sampling position xk+1.
Our decision parameter is the circle function evaluated at the
midpoint between these two pixels:
30. Decision Parameter
Pk = f circle ( xk + 1, yk - ½ )
Pk = ( xk + 1 ) 2 + ( yk - ½ ) 2 – r 2 ……...(1)
31. Decision Parameter
If pk < 0, this midpoint is inside the circle and the pixel on
scan line yk is closer to the circle boundary. Otherwise, the
mid position is outside or on the circle boundary, and we
select the pixel on scan-line yk-1.
32. Decision Parameter
Successive decision parameters are obtained using
incremental calculations. We obtain a recursive expression
for the next decision parameter by evaluating the circle
function at sampling position xk+1+1 = xk+2:
33. Decision Parameter
Pk+1 = f circle ( xk+1 + 1, yk+1 - ½ )
Pk+1 = [ ( xk + 1 ) + 1 ] 2 + ( yk+1 - ½ ) 2 – r 2
.………(2)
34. Decision Parameter
Subtracting (1) from (2), we get:
Pk+1 - Pk = [ ( xk + 1 ) + 1 ] 2 + ( yk+1 - ½ ) 2 – r 2 – ( xk + 1 ) 2 - ( yk -
½ ) 2 + r 2
or
Pk+1 = Pk + 2( xk + 1 ) + ( y2
k+1 - y2
k ) – ( yk+1 - yk ) + 1
35. Decision Parameter
Where yk+1 is either yk or yk-1, depending on the sign of Pk.
Therefore, if Pk < 0 or negative then yk+1 will be yk and the
formula to calculate Pk+1 will be:
38. Decision Parameter
Pk+1 = Pk + 2( xk + 1 ) + [ (y k -1)2 - y2
k ]
– (yk -1- yk ) + 1
Pk+1 = Pk + 2(xk + 1) + (y2
k - 2 y k +1 - y2
k )
– ( yk -1- yk ) + 1
Pk+1 = Pk + 2( xk + 1 ) - 2 y k + 1 + 1 +1
Pk+1 = Pk + 2( xk + 1 ) - 2 y k + 2 +1
Pk+1 = Pk + 2( xk + 1 ) - 2 ( y k – 1 ) + 1
39. Decision Parameter
Now a similar case that we observed in line algorithm is that
how would starting Pk be calculated.
For this, the starting pixel position will be (0, r).
Therefore, putting this value in equation, we get
40. Decision Parameter
P0 = ( 0 + 1 ) 2 + ( r - ½ ) 2 – r 2
P0 = 1 + r2 - r + ¼ – r 2
P0 = 5/4 – r
If radius r is specified as an integer, we can simply round p0
to:
P0 = 1 – r
Since all increments are integer. Finally the algorithm can be
summed up as :
41. Algorithm
MidpointCircle (xcenter, ycenter, radius)
x = 0;
y = r;
p = 1 - r;
do
DrawSymmetricPoints (xcenter, ycenter, x, y)
x = x + 1
If p < 0 Then
p = p + 2 * ( x + 1 ) + 1
42. Algorithm Cont…
else
y = y - 1
p = p + 2 * ( x+ 1) –2 ( y – 1 ) + 1
while ( x < y )
Example to calculate first octant of the circle using above
algorithm.