平面几何中园的方程可以描绘为:
$(x-x_0)2+(y-y_{0})2=r^2$
其中$(x_0,y_0)$ 是圆心坐标,r为半径。为了简化可以先考虑圆心和坐标原点重合的情况,其他情况可以在此基础上平移得到。
由于圆的八分对策性,因此若已知圆弧上一点P(x,y),则可以得到另外7个对称点:(x,-y) (-x,y) (-x,-y) (-y,x) (-y,-x) (y,x) (y,-x) 。
中点画圆算法的步骤
决策参数取决于下一点$(x_k+1,y_k-1/2)$ 是在圆内还是圆外,如果圆内,则$y_k$更接近圆周边界,否则是$y_k-1$
-
输入圆半径r和圆心$(x_c,y_c)$,并得到圆周(圆心在原点)上的第一个点:
$(x_0,y_0)=(0,r)$
-
计算决策参数的初始值:
$p_0 = 5/4-r$
-
在每个$x_k$位置,从k=0开始,假设$p_k$<0,圆心在(0,0)的圆的下一个点为$(x_{k+1},y_k)$,并且
$p_{k+1} = p_k + 2x_{k+1}+1$
否则,圆的下一点是$(x_k+1,y_k-1)$,并且
$p_{k+1} =p_k+2x_{k+1}+1-2y_{k+1}$
其中 $2x_{k+1}=2x_k+2$且$2y_{k+1}=2y_k-2$。
确定在其他七个八分圆中的对称点。
-
将每个计算出的像素位置(x,y)移动到圆心在$(x_c,y_c)$的圆的路径上,并画坐标值:
$x=x+x_c$, $y=y+y_c$
重复步骤3到步骤5,直至x>=y 。