类似Bresenham的算法可能是预期的答案,并且可以在没有"复杂理论"的情况下得出.从(x,y)
圆上的一个点开始:(R,0)
并保持该值d=x^2+y^2-R^2
,最初为0. D是从当前点到圆的平方距离.我们递增Y,并根据需要递减X以保持D最小:
// Discretize 1/8 circle:
x = R ; y = 0 ; d = 0
while x >= y
print (x,y)
// increment Y, D must be updated by (Y+1)^2 - Y^2 = 2*Y+1
d += (2*y+1) ; y++
// now if we decrement X, D will be updated by -2*X+1
// do it only if it keeps D closer to 0
if d >= 0
d += (-2*x+1) ; x--
Run Code Online (Sandbox Code Playgroud)
老实说,中点圈算法不够吗?只需在所有象限中镜像它.并且绝不是 - 除非你试图找到一个窗口应用测试人员的工作,Bresenham的线算法并不是复杂的理论.