Skip to main content

Midpoint circle: r=10, centre (20,30)

Short answer

Use midpoint circle algorithm with p0=1-r=-9; octant points are (0,10), (1,10), (2,10), (3,10), (4,9), (5,9), (6,8), (7,7). Applying eight-way symmetry about (20,30) yields 56 distinct pixels on the circle.

Using the midpoint circle drawing algorithm, find all the points of a circle of radius 10 units in all the quadrants, where the center of the circle is (20, 30).

Given: radius r = 10, centre (20,30).

Start at (x0, y0) = (0, 10). Initial parameter p0 = 1 − r = -9.

p < 0 : next point (x+1, y),     p_new = p + 2x_new + 1
p ≥ 0 : next point (x+1, y−1),   p_new = p + 2(x_new − y_new) + 1
Stop when x ≥ y

Decision parameter table (circle centred at the origin; p_k decides the next point):

kp_k(x_k, y_k)next (x, y)
0-9(0,10)(1,10)
1-6(1,10)(2,10)
2-1(2,10)(3,10)
36(3,10)(4,9)
4-3(4,9)(5,9)
58(5,9)(6,8)
65(6,8)(7,7)
76(7,7)(8,6)

Octant points about the origin: (0,10), (1,10), (2,10), (3,10), (4,9), (5,9), (6,8), (7,7).

Eight-way symmetry gives, for each octant point (x,y), the points (xc±x, yc±y) and (xc±y, yc±x):

(x,y)8 symmetric points
(0,10)(20,40) (20,40) (20,20) (20,20) (30,30) (10,30) (30,30) (10,30)
(1,10)(21,40) (19,40) (21,20) (19,20) (30,31) (10,31) (30,29) (10,29)
(2,10)(22,40) (18,40) (22,20) (18,20) (30,32) (10,32) (30,28) (10,28)
(3,10)(23,40) (17,40) (23,20) (17,20) (30,33) (10,33) (30,27) (10,27)
(4,9)(24,39) (16,39) (24,21) (16,21) (29,34) (11,34) (29,26) (11,26)
(5,9)(25,39) (15,39) (25,21) (15,21) (29,35) (11,35) (29,25) (11,25)
(6,8)(26,38) (14,38) (26,22) (14,22) (28,36) (12,36) (28,24) (12,24)
(7,7)(27,37) (13,37) (27,23) (13,23) (27,37) (13,37) (27,23) (13,23)

Answer: 56 distinct pixels on the whole circle, listed above.

✓ Answer checked by Claude Opus 5.5 (high effort)

All Computer Graphics chapter 2 questions →